1

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

逻辑很简单,我有一个由按钮组成的图表栏,当按下按钮时,它会创建一个没有宽度的标签,然后以同样的方法,动画开始拉长标签,以便标签内的文字出来了,然后在短暂的 2.5 秒延迟后,标签再次收缩并从 superview 中删除。

问题是 :

  • 延迟在 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 问题上搜索,事实上,我做到了,遗憾的是,我发现的所有帖子都没有为我提供我需要的答案。:(

4

1 回答 1

1

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

于 2012-05-08T07:25:50.233 回答