如何让文字淡入UILabel?

Her*_*999 11 objective-c ios

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

现在我只是用

labelMain.text = @"my text";
Run Code Online (Sandbox Code Playgroud)

lev*_*ker 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];
Run Code Online (Sandbox Code Playgroud)

这将从之前的值labelMain.text到"新值" 交叉淡入淡出.

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

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

  • 如果有人想要在同一个超视图中为很多标签设置动画,只需提示一下,只需在`transitionWithView`参数中使用superview即可. (2认同)
  • 这是最好的方法.不知道为什么这不是公认的答案. (2认同)

Vin*_*ini 28

以下代码将为您的标签带来褪色效果.

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

    [UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseIn
    animations:^{ labelMain.alpha = 1;}
    completion:nil];
 }
Run Code Online (Sandbox Code Playgroud)


Iro*_*Man 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");
        }];
    }];
Run Code Online (Sandbox Code Playgroud)