如何让视图控制器在动画之前绘制视图?

时间:2012-05-31 10:07:05

标签: iphone uiview uiviewcontroller uianimation

我有一个视图控制器,其作用是显示一个大图像,最初大小适合屏幕,用户可以平移和缩放。图像是使用手机的相机拍摄的,然后保存到设备并使用+[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行以试图强制它显示其视图,但它没有帮助。在动画制作动画之前,如何使视图控制器自行绘制?

1 个答案:

答案 0 :(得分:0)

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