2008-11-04 3 views
3

Apple 샘플 ViewTransitions에서 가져온 코드를 사용하여 두 개의 뷰를 서로 바꿉니다. 애니메이션이 시작되기 전에 전환 끝에서 단일 프레임을 보여주는 CAT 변환

CATransition *animation = [CATransition animation]; 
[animation setDelegate:self]; 
[animation setType:kCATransitionFade]; 
[animation setDuration:0.3f]; 
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]]; 
[[container layer] addAnimation:animation forKey:@"swap"]; 

내 전환이 devlice에서 실행

, 나는 때때로 전환 ​​애니메이션의 마지막 프레임의 단일 프레임 플래시를 가져온 다음 애니메이션이 부드럽게 재생됩니다. 이렇게하면 매끄러운 애니메이션이 실행되기 전에 다시 깜빡이고 두 번째 뷰가 깜박입니다.

내 예제와 Apple의 주요 차이점은 내보기가 전체 화면이 아니라는 것입니다. 하위보기가 모두 포함 된 컨테이너 UIView가 있고 루트보기 레이어 대신 컨테이너 레이어에 애니메이션을 적용하고 있습니다. 나는 이것이 많은 차이를 가져야한다는 것을 알 수 없다.

이 문제는 시뮬레이터에서 전혀 발생하지 않고 장치에서 간헐적으로 발생합니다 (약 60-70 %). 다른 사람이이 행동을보고 있습니까? 만약 그렇다면 어떻게 그 문제를 해결 했습니까?

추가 정보로 업데이트 : 코드는 원래 다중 파트 애니메이션의 일부 였지만 문제를 격리하기 위해 단추로 트리거되도록 이동했습니다. 두 가지 상황 모두에서 문제가 발생합니다.

애니메이션 대리자가 구현되었지만 문제를 격리하고 제거하기 위해 제거되었습니다.

애니메이션 도중보기가 변경되지 않으며 사실 [container setUserInteractionEnabled:NO]이 호출되고 있습니다 (그러나 사용자 상호 작용을 사용하지 않으면 문제가 발생 함).

트랜지션 중간에서 애니메이션을 시작하고 끝 부분에서 끝내기 전에 setStartProgresssetEndProgress을 사용하여 애니메이션을 시작했지만 다시 문제가 발생했습니다.

애니메이션 효과가 느려지므로 아무런 효과가 없습니다.

답변

0

해결되었으므로 위의 코드 예제에서 애니메이션을 설정 한 후 동일한 방법으로보기를 교환했습니다.

animationDidStart 대리인에게 이동하면 문제가 해결됩니다.

+0

조치의 일부 예제 코드를 제공해 주실 수 있습니까? 귀하의 설명으로 이해하는 것을 구현했지만 '글리치 프레임'은 계속됩니다. – teabot

+0

나는 또한이 문제에 직면 해있다 ... 예제 코드를 게시 할 수 있니? 내 글리치 문제는 animationDidStop에서 imageview의 이미지를 재설정 한 후에도 지속됩니다. – theprojectabot

0

귀하의 질문에 대한 답변을 시작하려면 더 많은 정보가 필요합니다. 예를 들어, 해당 코드를 어떻게 호출하고 있습니까 (예 : 단추로 작업에 바인딩되었거나 자동으로 트리거 됨). 애니메이션 (및 그 안에 포함 된 내용)을 시작 및 중지하고 애니메이션이 진행되는 동안 어떤 시점에서 여러분의 시각이 바뀌고 있습니까? 시뮬레이터와 디바이스 사이의 타이밍은 꺼져있을 것입니다. 모든 것이 더 빨리 발생하기 때문에 시뮬레이터에 의존해서 애니메이션을 테스트해서는 안됩니다.