3

我一直在努力解决这个问题。我已将 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";

但调用它不会改变屏幕上的文本。

任何帮助都会很棒!

4

1 回答 1

3

确保您正在更改主线程上的字符串属性并禁用动画。这对我有用(斯威夫特):

 dispatch_async(dispatch_get_main_queue(), { () -> Void in
                CATransaction.begin()
                CATransaction.setDisableActions(true)
                self.textLayer?.string = text
                CATransaction.commit()
            })
于 2016-07-20T20:32:58.333 回答