2

我有一个视图控制器,它的工作是显示一个大图像,最初的大小适合屏幕,用户可以平移和缩放。图像是用手机的相机拍摄的,然后保存到设备并使用+[UIImage imageWithData:].

我在导航堆栈中显示控制器,但我使用这样的淡入淡出过渡:

SGBImageController *imageController = [[[SGBImageController alloc] init] autorelease];
imageController = <theImage>;
[imageController loadView];

[UIView transitionWithView:self.navigationController.view
                  duration:0.33
                   options:UIViewAnimationOptionAllowAnimatedContent
                          |UIViewAnimationOptionTransitionCrossDissolve
                animations:^{

    [self.navigationController pushViewController:imageController animated:NO];

} completion:nil];

淡入淡出动画应该是平滑的,但它很生涩,并且在查看乐器时我发现它的所有时间都在CA::Layer::Render. 我添加了这loadView条线以试图强制它显示它的视图,但它没有帮助。如何让视图控制器在动画之前自行绘制?

4

1 回答 1

0

您不应该直接调用 loadView ,那是操作系统处理的事情。相反,只是imageController.view以任何方式引用都会开始加载。您可以使用委托回调或 NSNotification 在调用 SGBImageController 的viewDidLoad方法时通知您的类,然后从那里开始您的动画。

于 2013-02-08T01:18:10.930 回答