11

现在我有一个按钮的 IBAction,它生成一个随机数,每个数字分配给在 UILabel 中显示文本。而不是仅仅出现,我希望文本淡入或任何其他有趣的动画也很酷。有谁知道实现这一点的简单方法?

现在我只是使用

labelMain.text = @"my text";
4

6 回答 6

31

我知道这有点陈旧(11 个月大),但我认为值得一提的是发布的其他方法的替代方法,我认为这是一个更好的解决方案。

使用UIView transitionWithView:duration:options:animations:completion类级别的方法,如下所示:

NSTimeInterval duration = 0.5f;
[UIView transitionWithView:labelMain
                  duration:duration
                   options:UIViewAnimationOptionTransitionCrossDissolve
                animations:^{
                  labelMain.text = @"new value";
                } completion:nil];

这将从先前的值交叉淡入labelMain.text到“新值”。

这种方法也适用于其他视图值,例如更改 UIImageView 的图像。

请参阅Apple关于该主题的文档。

于 2014-06-05T21:53:08.737 回答
28

以下代码将为您的标签提供褪色效果。

 - (IBAction)buttonClicked:(UIButton *)sender
  {
    labelMain.alpha = 0;

    [UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseIn
    animations:^{ labelMain.alpha = 1;}
    completion:nil];
 }
于 2013-06-28T06:23:23.217 回答
6
label.text = @"old text";
    [UIView animateWithDuration:0.4 animations:^{
        label.alpha = 0.0f;
    } completion:^(BOOL finished) {
        label.text = @"next text";
        [UIView animateWithDuration:0.4 animations:^{
            label.alpha = 1.0f;
        } completion:^(BOOL finished) {
            NSLog(@"finished transition");
        }];
    }];
于 2013-06-28T06:26:26.310 回答
1

试试这个:

[labelMain setAlpha:0];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.8];
[labelMain setAlpha:1];
[UIView commitAnimations];

更改持续时间非常简单 - 只需调整0.8代码中的值。

于 2013-06-28T06:24:05.567 回答
0
// fade out the current value
[UIView animateWithDuration:0.2
                      delay:0
                    options:0
                 animations:^{
                   labelMain.alpha = 0.0f;
                 }
                 completion:^(BOOL finished) {
                   // set the new value and fade in
                   labelMain.text = newValue;
                   [UIView animateWithDuration:0.2
                                         delay:0
                                       options:0
                                    animations:^{
                                      labelMain.alpha = 1.0f;
                                    }
                                    completion:nil];

                 }];
于 2013-06-28T06:29:05.403 回答
0

这看起来像交叉淡入淡出动画

 [UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseOut
        animations:^{
    labelMain.alpha = 0;

        [UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseIn
        animations:^{ labelMain.alpha = 1;}
        completion:nil];

    } completion:nil];
于 2013-06-28T07:22:42.047 回答