如何像进度条

时间:2018-03-29 00:55:44

标签: ios objective-c animation text uilabel

我试图从左到右逐步改变UILabel的文字颜色。我发现我可以使用UIView的动画:

[UIView transitionWithView:_label duration:1 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
    _label.textColor = [UIColor redColor];
} completion:nil];

但问题是我的案例没有选择:从左到右逐步。

然后我找到了一种通过调用以下方式逐字更改文本颜色的方法:

[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(yourSelector) userInfo:nil repeats:NO];

- (void)yourSelector
{
    [_string setAttributes:@{NSForegroundColorAttributeName: [UIColor redColor]} range:NSMakeRange(_index, 1)];
    [_label setAttributedText:_string];
    _index++;
}

但问题在于我希望动画更像是逐个字母,但每个字母都有动画,就像有两个不同颜色的标签放在同一个位置(黑色覆盖红色),只是为面具制作动画从左到右隐藏黑色标签,以便红色标签逐步显示。

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:3)

要实现它,请按照以下步骤操作:

  • 创建2个UILabeltrackLabelprogressLabel)。
  • trackLabelblackColorprogressLabelredColor
  • 使progressLabel重叠trackLabel,相同的前导,上下。
  • trackLabel提供全文宽度和progressLabel 0宽度。
  • 设置progressLabel.lineBreakMode = NSLineBreakByClipping;
  • 当您需要为进度设置动画时,请增加progressLabel的宽度。

有关详细信息,请查看my demo project

enter link description here