코어 애니메이션으로 푸시 앤 팝 애니메이션을 사용자 지정하고 싶습니다! 예를 들어, 다음과 같이 pushViewController에 코드를 작성합니다.UINavigationController 사용자 지정 성능 문제가있는 푸시/팝 애니메이션
{
//save currrent view's snapshot`
m_curLayer = [self _ConstructLayerByView:self.view];
[super pushViewController:viewController animated:NO];
//save the next view's snapshot
m_nextLayer = [self _ConstructLayerByView:self.view];
//add these two new layers to self.view.layer, and add customized animations to them.
[self _PushAnimation];
}
애니메이션은 예상대로 작동하지만 성능이 좋지 않습니다. 약간의 프로파일 링 후에, 나는 renderInContext가 매우 느리다는 것을 발견했다. 내 스냅 샷 기능은 다음과 같습니다
+ (id)CaptureView:(UIView *)view
{
UIGraphicsBeginImageContextWithOptions(view.frame.size, YES, [UIScreen mainScreen].scale);
CGContextRef contenxt = UIGraphicsGetCurrentContext();
[view.layer renderInContext:contenxt];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return (id) [newImage CGImage];
}
그래서 나는 renderInContext, 또는 애니메이션을 사용자 정의 할 수있는 더 좋은 방법을 최적화 할 수있는 방법이 있는지 물어보고 싶은?
실제로 UINavigationController를 하위 클래스로 지정하고 push/pop 메서드를 재정의합니다. 방금 성능 문제를 만났습니다. – leoncheng