我正在创建一个带有层支持的 NSView
的 Cocoa 应用程序。我已将支持 View 的层自定义为 CATextlayer
类型,因为此 View 的主要目的是显示一些文本。
我在我的 init
过程中包含以下行,它不适用于我尝试过的任何内容重力常量:
textLayer.contentsGravity = kCAGravityBottomRight
另一方面,以下内容确实生效:
textLayer.alignmentMode = kCAAlignmentRight
所以基本的水平对齐可以工作,但我无法在垂直空间中进行调整。
在CATextLayer
中指定文本位置的最佳方法是什么?我也一直在尝试修改NSParagraphStyle
属性在支持属性字符串中,但这似乎也无法定位文本?
任何帮助将不胜感激。
===
注意:CATextLayer不是支持我的NSView
的图层的子图层。它是支持我的 View 的图层类型。我通过在自定义 NSView
中重写 makeBackingLayer() 来实现此目的,如下所示:
override func makeBackingLayer() -> CALayer {
return CATextLayer()
}
我将其包括在内,以防它在某种程度上相关。
最佳答案
尽管您可以将您为 CATextLayer
设置的文本视为该图层的内容,但这并不意味着它就是 中的值该图层的 >contents
属性。事实上,我非常确定 CALayer
的 contents
属性只能是图像(或 nil)。如果值为 nil
,则为 contentsGravity
、contentsRect
和 contentsCenter
设置的值 - 所有这些都对此进行操作contents
属性 - 不会执行任何操作。
我的猜测是,文本图层的 contents
属性为零(无论您设置什么文本值,都将保持为零),这就是为什么没有发生任何事情的原因。
关于objective-c - 为什么我的 CATextLayer 不响应contentsGravity 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28985760/