从Mac上拔下iPad后,在viewDidAppear中调用的动画不会发生

时间:2013-12-05 04:46:33

标签: animation uiview viewdidappear

我的应用的代码工作流程如下: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。我愿意尝试任何事情。

此外,当按下按钮时,子视图会随动画消失,无论我如何运行应用程序,动画都能正常工作,我唯一的问题是启动时。

1 个答案:

答案 0 :(得分:0)

我发现[super viewDidAppear:animated]和[self setUpScreen]之间的[NSThread sleepForTimeInterval:0.1]不够长(我在发布问题之前尝试过的解决方案之一)。似乎将时间间隔设为0.5可以解决我的问题。但是,如果有更好的解决方案,请分享。