我正在尝试为NSString设置动画并使其逐个字符显示。 虽然我在NSLog中看到该函数确实有效,但是在动画期间,只有当动画结束时,文本才会出现在UITExtView上。
我的代码:
- (void)viewDidAppear:(BOOL)animated
{
[self performSelectorOnMainThread:@selector(startAnimation) withObject:nil waitUntilDone:NO];
}
#pragma mark - General Methods
- (void)animateCharacterByCharacter_text:(NSString *)text characterDelay:(NSTimeInterval)characterDelay
{
[self.textAbout setText:@""];
for (int i=0; i < text.length; i++)
{
NSString *textToSet = [NSString stringWithFormat:@"%@%c", self.textAbout.text, [text characterAtIndex:i]];
self.textAbout.text = textToSet;
NSLog(@"%@", textToSet);
[NSThread sleepForTimeInterval:characterDelay];
}
}
- (void)startAnimation
{
NSString *stringAbout = @"sfhasdf\nhajsbdh";
[self animateCharacterByCharacter_text:stringAbout characterDelay:0.5];
}
我一直在尝试'dispatch_async',我得到了相同的结果。 我做错了什么?
答案 0 :(得分:2)
不要使用sleepForTimeInterval:
,因为它会阻止UI更新。相反,运行一个计时器,每次触发时都会在文本字段中添加下一个字符(并在完成后取消计时器)。