我有一个控制器,它使用动画UIImageView来显示30 512 x 512帧的序列。当我运行应用程序时,视图会快速执行以下操作。
- (void)viewDidLoad {
[super viewDidLoad];
[[self imageView] setAnimationImages:[[self dataModel] framesForLOOP]];
[[self imageView] setAnimationDuration:2.5];
[[self imageView] setAnimationRepeatCount:1];
[[self imageView] startAnimating];
NSLog(@"MARKER_001");
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
NSLog(@"MARKER_002");
}
这一切都运行正常,但我想要解决的是,在viewDidLoad:
被调用之后,viewDidAppear:
被调用之前有2秒的延迟(在MARKER_001和MARKER_002之间)。
我原以为可能会延迟设置框架NSArray
或调用setAnimationImages:
后或startAnimating
之后。
无论如何减少/消除这种延迟,我宁愿在启动时预加载动画并在那里点击,而不是在viewController加载时有延迟,因为它使触发segue的按钮实例化新控制器感到迟钝。
答案 0 :(得分:2)
只是一些想法:
答案 1 :(得分:0)
请注意,即使您在startAnimating
中呼叫viewDidLoad
,动画也不会从那里开始。您无法在尚未显示的控制器中运行动画。
您应该拨打startAnimating
中的viewDidAppear
。
这两种方法之间延迟两秒并不奇怪。延迟可以更长或更短,具体取决于应用程序内部发生的情况。 测量两个没有连接的方法之间的时间是没有意义的。如何衡量单个方法花费的时间?
如果出现任何问题,您应该粘贴用户操作之间发生的所有代码以及显示所有内容并发生延迟的时刻。