Динамически изменять текст 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()
})