我的应用的代码工作流程如下:viewDidLoad-> viewDidAppear-> create subview-> animate subview
动画使子视图从极小的变换变为它应该的大小,使其具有类似于UIAlert节目的效果。当我从我的Mac上运行应用程序时,我的代码完美无瑕,但在我拔掉iPad并自行运行之后不知何故。我尝试退出应用程序并再次尝试,甚至重新启动iPad以使其工作,但无济于事。
这是我的代码:
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
[self setUpScreen];
}
和setUpScreen方法......
// Populates the setUpView with various other items (unimportant for the issue in question)
setUpView.transform = CGAffineTransformMakeScale(0.01, 0.01);
[self.view addSubview:setUpView];
[UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseOut
animations:^{
setUpView.transform = CGAffineTransformIdentity;
}
completion:^(BOOL finished){
}];
再说一遍,重申我的问题,当应用程序直接从Xcode运行时,“放大”动画效果很好,但是当应用程序在没有Xcode协助的情况下运行时,它无法执行此操作(视图就会出现在那里)。
我试过在animatewithDuration:方法中添加一个延迟,我也尝试在调用setUpView方法之前添加一个sleep。我愿意尝试任何事情。
此外,当按下按钮时,子视图会随动画消失,无论我如何运行应用程序,动画都能正常工作,我唯一的问题是启动时。
答案 0 :(得分:0)
我发现[super viewDidAppear:animated]和[self setUpScreen]之间的[NSThread sleepForTimeInterval:0.1]不够长(我在发布问题之前尝试过的解决方案之一)。似乎将时间间隔设为0.5可以解决我的问题。但是,如果有更好的解决方案,请分享。