【问题标题】:How to add an animation to the UIView in viewDidAppear?如何在 viewDidAppear 中向 UIView 添加动画?
【发布时间】:2011-01-12 10:03:14
【问题描述】:

我尝试在 viewDidLoad 和 viewDidAppear 中添加动画,但不起作用:

- (void)viewDidAppear:(BOOL)animated{
 [UIView beginAnimations:@"transition" context:NULL];
 [UIView setAnimationTransition:110 forView:self.view cache:YES];
 [UIView commitAnimations];
}

为什么?

【问题讨论】:

    标签: iphone xcode uiview viewdidload viewdidappear


    【解决方案1】:

    你没有告诉视图它应该动画到哪个状态,所以它不会做任何事情。您需要在 beginAnimations:context:commitAnimations 之间放置代码以更改视图的外观(例如,通过删除一个子视图并添加另一个子视图)。

    【讨论】:

    • 嗯,我想我不需要告诉他这个。我尝试将我的代码放入 IBAction 并且它可以工作。我写了 setAnimationTransition: forView: 所以我写了动画应该在自己的视图中。它只是在 viewDidLoad 和 viewDidAppear 方法中不起作用。
    【解决方案2】:
    1. 您没有正确使用beginAnimations:commitAnimations。你应该在它们之间放置一些通常不会被动画的东西:例如使用self.view.alpha = 0.5,您将获得褪色效果。 它们对不在它们之间的任何东西都没有影响。

    2. viewDidAppear: 被调用时,你的视图,嗯……已经出现了。动画任何东西都为时已晚。你真正想做的是这样的:

      - (void)showMyViewWithAnimation {
          [UIView beginAnimations:nil context:nil];
          [UIView setAnimationTransition:110 forView:childView cache:YES];
          [parentView addSubview:childView];
          [UIView commitAnimations];
      }
      

      在上面的示例中,childView 在您的示例中称为self.view

    3. 请写出转换的名称;没人知道110是什么。这是不好的风格。

    【讨论】:

    • 该代码中的错误是您应该在self.view 上执行setAnimationTransition:forView:,而不是drum.view。在文档中,它说:“在容器视图上设置转换。”
    • 但是我想要drum.view 的效果;)这就是为什么我试图将动画放入drumViewController 的viewDidLoad 中的原因。
    【解决方案3】:

    我遇到了同样的问题,我想我在 SO question 上找到了解决方案。

    当 viewDidAppear 被调用时,您仍然看不到屏幕上的任何内容(尽管有名称),但您即将看到。然后,您可以使用 performSelector:withDelay 或 NSTimer 来启动动画。延迟可以仅为 0.1,并且您的动画将在屏幕出现时播放。

    - (void)viewDidAppear:(BOOL)animated {
        [super viewDidAppear:animated];
    
        NSLog(@"View did appear!");
    
        [self performSelector:@selector(animationCode) withObject:nil afterDelay:0.1f];
    }
    
    - (void)animationCode {
        // you animation code
    }
    

    【讨论】:

    • 之前看了很多文章。只有这件事发生在我身上,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    相关资源
    最近更新 更多