我试图从左到右逐步改变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++;
}
但问题在于我希望动画更像是逐个字母,但每个字母都有动画,就像有两个不同颜色的标签放在同一个位置(黑色覆盖红色),只是为面具制作动画从左到右隐藏黑色标签,以便红色标签逐步显示。
有没有办法实现这个目标?
答案 0 :(得分:3)
要实现它,请按照以下步骤操作:
UILabel
(trackLabel
和progressLabel
)。trackLabel
有blackColor
而progressLabel
有redColor
。progressLabel
重叠trackLabel
,相同的前导,上下。trackLabel
提供全文宽度和progressLabel
0宽度。progressLabel.lineBreakMode = NSLineBreakByClipping;
progressLabel
的宽度。有关详细信息,请查看my demo project。