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]
이 호출되고 있습니다 (그러나 사용자 상호 작용을 사용하지 않으면 문제가 발생 함).
트랜지션 중간에서 애니메이션을 시작하고 끝 부분에서 끝내기 전에 setStartProgress
및 setEndProgress
을 사용하여 애니메이션을 시작했지만 다시 문제가 발생했습니다.
애니메이션 효과가 느려지므로 아무런 효과가 없습니다.
조치의 일부 예제 코드를 제공해 주실 수 있습니까? 귀하의 설명으로 이해하는 것을 구현했지만 '글리치 프레임'은 계속됩니다. – teabot
나는 또한이 문제에 직면 해있다 ... 예제 코드를 게시 할 수 있니? 내 글리치 문제는 animationDidStop에서 imageview의 이미지를 재설정 한 후에도 지속됩니다. – theprojectabot