使用UIView animateWithDuration:delay:Xcode

时间:2014-02-04 08:20:43

标签: iphone xcode5 animatewithduration

我正在尝试使用

[UIView animateWithDuration:1 delay:2 options:UIViewAnimationOptionCurveEaseIn animations:^{
} completion:^ (BOOL completed) {}         ];
然而,无论我为延迟提出什么号码,都没有延迟 当触摸另一个按钮时,我试图让一系列按钮一个接一个地淡入淡出。所以我使用了一系列具有不同延迟时间的UIView动画,但无论我进入什么时间延迟,它们都会同时出现。有人有什么建议吗?

3 个答案:

答案 0 :(得分:16)

首先,值animateWithDurationdelay float 值,应该是1.02.0

意见:如果您的代码位于ViewDidLoad方法,请尝试将其移至分离的函数

其次,如果您无法通过此上下文执行此操作,请跳转到另一个,或者使用

performSelector:withObject:afterDelay

另一种解决方法是将delay设置为0,并将后续的UIView动画块放在之前completion语句的animateWithDuration块中

 [UIView animateWithDuration:2.0 delay:0.0 options:UIViewAnimationOptionCurveEaseInOut
                 animations:^(void) {
        //Leave it empty
                 }
                 completion:^(BOOL finished){

// Your code goes here
   [UIView animateWithDuration:1.0 delay:0.0 options:
   UIViewAnimationOptionCurveEaseIn animations:^{
        } completion:^ (BOOL completed) {}];
    }];

PS:一些属性不支持动画,例如在动画块中设置文本,因此在延迟结束后,动画开始会立即更改文本,因为该更改不可动画

在文本动画案例中,要执行所需操作,请按如下所示更改完成块中的文本:

[UIView animateWithDuration:1.0
                      delay:2.0
                    options: UIViewAnimationOptionTransitionCrossDissolve
                 animations:nil
                 completion:^{
                     lbl.text =  @"My text" ;
}];

同样backgroundColor在<{1}}中动画。相反,请使用视图UIView

backgroundColor属性
layer

答案 1 :(得分:2)

或者您可以在viewWillAppear进行编码。

- (void)viewWillAppear:(BOOL)animated {
    [UIView animateWithDuration:1.0
                          delay:2.0
                        options:UIViewAnimationOptionTransitionCrossDissolve
                     animations:^{
                         //yourAnimation
                     } completion:^(BOOL finished){
                         NSLog(@"Animation is finished");
                     }];
}

答案 2 :(得分:1)

在您实施之前,请阅读它 持续时间:动画的总持续时间,以秒为单位。如果指定负值或0,则在不对其进行动画处理的情况下进行更改。 延迟:开始动画之前等待的时间量(以秒为单位)。指定值0可立即开始动画。 选项

- 使用上述两个参数的浮点值    - 如果你在单独的例程&amp;

中定义动画操作,那将是冰

在ViewDidAppear / viewWillapear中调用它适当的位置。

Use function like this & set your UI Element properties like this:
 [UIView animateWithDuration:0.6
                          delay:0.3
                        options: UIViewAnimationOptionCurveEaseInOut
                     animations:^{
                         [self.view layoutIfNeeded];
                         [yourviews setTintColor:[UIColor whiteColor]];
                         self.view.backgroundColor = [UIColor greenColor];
                     }
                     completion:^(BOOL finished){

                         // You next action to perform after completion;
                     }];
}

快乐的编码,希望它能帮到你。