如何使用CATextLayer将文本添加到自定义屏幕保护程序中?
我试图在CATextLayer上显示一系列文字,作为屏幕保护程序的一部分。
- (void) startAnimation
{
[super startAnimation];
_textLayer = [CATextLayer layer];
_textLayer.string = @"Test.";
_textLayer.frame = self.bounds;
_textLayer.foregroundColor = [NSColor redColor].CGColor;
[self.layer addSublayer:_textLayer];
}
(_textLayer
被定义为实例变量)
我提供了上面的尝试,尝试创建CATextLayer,然后将其添加到屏幕保护程序层......无济于事。当我构建时,然后安装屏幕保护程序,没有任何显示。
我在网上浏览过,但无法找到在屏幕保护程序中使用CATextLayer的示例。
https://www.raywenderlich.com/90488/calayer-in-ios-with-swift-10-examples
上面的网站使用CATextLayer,但不是特别在屏幕保护程序的上下文中。
答案 0 :(得分:0)
这有点旧,但是为了后代的缘故,您需要首先创建一个覆盖屏幕的图层,并将其分配给(屏幕保护程序)视图。从那时起,您可以添加CATextLayer或其他图层。
self.layer = CALayer()
guard let layer = self.layer else {
errorLog("\(self.description) Couldn't create CALayer")
return
}
self.wantsLayer = true
layer.backgroundColor = NSColor.black.cgColor
layer.needsDisplayOnBoundsChange = true
layer.frame = self.bounds
以这种方式行事的人,无论如何,我都会极力建议您考虑使用NSTextView,它使事情变得如此简单:
// This is the debug view
let debugTextView = NSTextView(frame: bounds.insetBy(dx: 20, dy: 20))
debugTextView.font = .labelFont(ofSize: 30)
debugTextView.string += "Radar# FB7486243 (isPreview bug) : \(isPreviewBug) \n"
self.addSubview(debugTextView)