我发现此代码可以为带有输入效果的标签设置动画。我正在尝试将其用于属性字符串。
https://stackoverflow.com/a/11687530/1813525
我试过这个,但我假设我只是根据属性字符串的字符串重新创建相同的代码:
- (void)animateLabelShowText:(NSAttributedString*)newText characterDelay:(NSTimeInterval)delay
{
[self.mainLabel setText:@""];
for (int i=0; i<newText.length; i++)
{
dispatch_async(dispatch_get_main_queue(),
^{
[self.mainLabel setAttributedText:[[NSAttributedString alloc]initWithString:[NSString stringWithFormat:@"%@%C", [self.mainLabel.attributedText string], [[newText string] characterAtIndex:i]] attributes:nil]];
});
[NSThread sleepForTimeInterval:delay];
}
}
知道如何保留我的归因文字newText
感谢您的帮助。
答案 0 :(得分:1)
两个问题(假设您在后台线程上调用animateLabelShowText:characterDelay:
)。
setText:@""
。不要这样做。试试这个:
- (void)animateLabelShowText:(NSAttributedString*)newText characterDelay:(NSTimeInterval)delay
{
for (NSInteger i = 0; i <= newText.length; i++)
{
dispatch_async(dispatch_get_main_queue(), ^{
NSAttributedString *str = [newText attributedSubstringFromRange:NSMakeRange(0, i)];
self.mainLabel.attributedText = str;
});
[NSThread sleepForTimeInterval:delay];
}
}