首先,值animateWithDuration
和delay
是float
值,并且应该是1.0
和2.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]];