4

我正在尝试使用

[UIView animateWithDuration:1 delay:2 options:UIViewAnimationOptionCurveEaseIn animations:^{
} completion:^ (BOOL completed) {}         ];

但是,无论我延迟多少,都没有延迟。
当触摸另一个按钮时,我试图让一系列按钮一个接一个地淡入。所以我使用了一系列具有不同延迟长度的 UIView 动画,但无论我输入什么时间延迟,它们都会同时显示。有人有什么建议吗?

4

3 回答 3

18

首先,值animateWithDurationdelayfloat值,并且应该是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动画。_ UIView相反,使用backgroundColor视图的属性layer

[[controller layer] setBackgroundColor:[[UIColor anyColor] CGColor]];
于 2014-02-04T08:50:23.130 回答
2

Or you can code it at viewWillAppear.

- (void)viewWillAppear:(BOOL)animated {
    [UIView animateWithDuration:1.0
                          delay:2.0
                        options:UIViewAnimationOptionTransitionCrossDissolve
                     animations:^{
                         //yourAnimation
                     } completion:^(BOOL finished){
                         NSLog(@"Animation is finished");
                     }];
}
于 2014-10-20T12:01:03.763 回答
1

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

- 对上述两个参数使用浮点值 - 如果您在单独的例程中定义动画操作,那就太棒了

将其称为适当的位置,如 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;
                     }];
}

快乐的编码,希望它对你有帮助。

于 2016-08-03T19:58:35.640 回答