我正在尝试为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',我得到了相同的结果。
我做错了什么?

最佳答案

不要使用sleepForTimeInterval:,因为它会阻止UI更新。而是运行计时器,并在每次触发时将下一个字符添加到文本字段中(完成后取消计时器)。

关于ios - 动画期间,动画字符串(逐字符)未出现在UITextView上,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17185168/

10-11 00:50
查看更多