我一直在试图解决这个问题。我已经将一个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";
但是调用此方法不会更改屏幕上的文本。
任何帮助都会很棒!
答案 0 :(得分:3)
确保您正在更改主线程上的字符串属性并禁用动画。这对我有用(斯威夫特):
dispatch_async(dispatch_get_main_queue(), { () -> Void in
CATransaction.begin()
CATransaction.setDisableActions(true)
self.textLayer?.string = text
CATransaction.commit()
})