【问题标题】:IOS: question about animationIOS:关于动画的问题
【发布时间】:2011-10-23 12:35:48
【问题描述】:

我有这个代码: successview 是我的视图,它从 alpha 0.00 开始,但是当它使用 autoreverse 完成动画时,successview 变为 alpha 1.00...为什么?

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:2];
[UIView setAnimationRepeatAutoreverses:YES];
[successView setAlpha:1.00];
[UIView commitAnimations];

【问题讨论】:

    标签: ios xcode alpha


    【解决方案1】:

    一种方法是制作两种不同的动画:一种朝着 alpha 值 1.0 前进,然后另一种从 1.0 回到 0。

    使用UIViewanimateWithDuration:animations:completion: 方法来完成此操作。您可以在完成块中执行相反的操作。

    类似的东西:

    [UIView animateWithDuration:0.2
         animations:^{view.alpha = 1.0;}
         completion:^(BOOL finished){ 
    
            [UIView animateWithDuration:0.2
                             animations:^{view.alpha = 0;}];
    
         }];
    

    有关animations 的更多详细信息,请参阅UIView 文档。

    【讨论】:

      【解决方案2】:

      在文档中:

      如果您将自动反转与重复计数(可使用 setAnimationRepeatCount: 方法设置)结合使用,您可以创建在新旧值之间来回切换指定次数的动画。但是,请记住,重复计数表示完整循环的数量。如果您指定一个整数,例如 2.0,则动画以旧值结束,随后视图会立即更新自身以显示新值,这可能会令人不快。如果您希望动画以新值(而不是旧值)结束,请将 0.5 添加到重复计数值。这会为动画添加一个额外的半个周期。

      更新:读错了您的代码,但如果您的目标是 iOS 4.0 及更高版本,文档建议您改用 animateWithDuration:delay:options:animations:completion:

      【讨论】:

        【解决方案3】:

        如果有人感兴趣,这里是 Swift 代码:

        UIView.animate(withDuration: 0.2, animations: {
             view.alpha = 1
        }) { (finished) in
              UIView.animate(withDuration: 0.2, animations: {
                  view.alpha = 0
              }) 
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-05-23
          • 1970-01-01
          • 2012-01-19
          • 1970-01-01
          • 2021-11-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多