Динамически изменять текст CATextLayer

Я стучал головой о стену, пытаясь понять эту проблему. Я добавил CATextLayer в CALayer, и после нескольких операций я хочу изменить текст CATextLayer на что-то другое. Есть ли простой способ сделать это? Ниже у меня есть код, который не работает.

self.searchingForTextLayer = [CATextLayer layer];
    self.searchingForTextLayer.bounds = CGRectMake(0.0f, 0.0f, 100.0f, 30.0f);
    self.searchingForTextLayer.string = @"Searching for..";
    self.searchingForTextLayer.fontSize = 12;
    //TextLayer.font = [UIFont boldSystemFontOfSize:18].fontName;
    self.searchingForTextLayer.backgroundColor = [UIColor clearColor].CGColor;
    self.searchingForTextLayer.position = CGPointMake(80.0, 40.0f);
    self.searchingForTextLayer.wrapped = NO;
    [self.captureVideoPreviewLayer addSublayer:self.searchingForTextLayer];

а позже я называю это в методе

self.searchingForTextLayer.string = @"Search complete";

но вызов этого не меняет текст на экране.

Любая помощь будет отличной!

1 ответ

Убедитесь, что вы меняете строковое свойство в главном потоке и отключаете анимацию. Это сработало для меня (Свифт):

 dispatch_async(dispatch_get_main_queue(), { () -> Void in
                CATransaction.begin()
                CATransaction.setDisableActions(true)
                self.textLayer?.string = text
                CATransaction.commit()
            })
Другие вопросы по тегам