阻止动画延迟在OS 4.3上正常工作但在5.0上没有

时间:2012-05-08 05:10:20

标签: iphone objective-c ios ipad

好的,所以我选择使用块动画为我的标签设置动画。

逻辑非常简单,我有一个由按钮组成的图表栏,当按下按钮时,它创建一个没有宽度的标签,然后以相同的方法,动画开始加长标签,使单词标签内部出现,然后在短暂的2.5秒延迟后,标签再次缩小并从超视图中移除。

问题是:

  • 延迟在OS 4.3中正常运行。 动画按预期工作,它显示标签,在2.5之后它会触发下一个动画并关闭标签。

  • OS 5.0中忽略延迟。 第一个动画完成后,它没有等待延迟,而是立即触发下一个动画块。

以下是我的一些关于动画的代码:

UILabel *lbl = [self createLabelWithText:numString frame:CGRectMake(touchPoint.x, touchPoint.y, 0, 10) bold:YES font:@"Helvetica" fontSize:10 color:[UIColor whiteColor] textAlignment:UITextAlignmentLeft andTag:987];
    [lbl setBackgroundColor:[UIColor blackColor]];
    [lbl setAlpha:0.5];
    [self.view addSubview:lbl];

    [UIView animateWithDuration:0.3 animations:^
     {
         [lbl setFrame:lblRect];
     }completion:^(BOOL finished) 
     {
        [UIView animateWithDuration:0.2 delay:2.5 options:UIViewAnimationOptionCurveEaseInOut animations:^
         {//here the second animation delay run properly on 4.3 , but ignored at 5.0
             [lbl setFrame:CGRectMake(touchPoint.x, touchPoint.y, 0, 10)];
         }completion:^(BOOL finished) {
             [lbl removeFromSuperview];
         }];
     }];

提前感谢您的帮助!

编辑:如果您有任何想知道为什么这个人没有搜索谷歌或其他stackoverflow问题,事实上,我做了,遗憾的是我找到的所有帖子都没有提供我需要的答案。 :(

1 个答案:

答案 0 :(得分:1)

好的,我发现了这个问题。它并不完全是块动画的错误,而是它发生的错误,因为我将动画设置为将我的uilabel缩小到宽度" 0"。在IOS 5.0中(至少在我的项目中),因为我通过使用约束来设置我的标签大小,当我试图缩小标签时,一旦它读取标签就不足以显示整个文本,它立即终止自己的标签。