如何让文字淡入UILabel?

时间:2013-06-28 06:19:12

标签: ios objective-c

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

现在我只使用

labelMain.text = @"my text";

6 个答案:

答案 0 :(得分: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值到#34;新值"交叉渐变。

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

有关该主题的信息,请参阅Apple's docs

答案 1 :(得分:28)

以下代码会对您的标签产生淡入效果。

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

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

答案 2 :(得分: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");
        }];
    }];

答案 3 :(得分:1)

试试这个:

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

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

答案 4 :(得分: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];

                 }];

答案 5 :(得分: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];