2

我正在尝试在 UILabel 中使用属性文本创建逐字符动画

//set attributed string
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"Yaba daba doo"];
[attributedString addAttribute:NSKernAttributeName value:@1 range:NSMakeRange(0, [attributedString length])];

//set animation
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0),
    ^{
        [self animateShowText:[attributedString string] characterDelay:0.1 withCurrentLabel:self.myLabel];
        [self.myLabel setAttributedText:attributedString];
    });

我希望最后一条消息会设置带有属性的文本,但找不到解决方案。在这里,我试图为字符串常规样式设置动画,并且让标签显示属性字符串,但它不起作用。你如何保持属性和动画文本?

4

1 回答 1

2

您应该只在主线程上更新视图。用于performSelectorOnMainThread:withObject:在块内执行此操作:

[self.myLabel performSelector: @selector(setAttributedText:) withObject: attributedString];

如果 animate show text 调用更新视图的方法,您应该这样做,或者替代方法是使用dispatch_sync(此时我会说甚至不要使用 GCD)。

于 2013-07-25T19:12:17.383 回答