我正在使用layer-backed NSView
创建一个Cocoa应用。我已经将支持视图的图层自定义为CATextlayer
类型,因为此视图的主要用途是显示一些文本。
我在init
过程中包含以下行,但它不适用于我尝试的任何contentGravity常量:
textLayer.contentsGravity = kCAGravityBottomRight
另一方面,以下内容确实生效:
textLayer.alignmentMode = kCAAlignmentRight
所以基本的水平对齐工作正常,但我无法在垂直空间进行调整。
在CATextLayer
中指定文字位置的最佳方法是什么?我一直在尝试修改支持归因字符串中的NSParagraphStyle
属性但是这似乎也无法定位文本?
非常感谢任何帮助。
===
注意:CATextLayer 不支持我NSView
的图层的子层。 是支持我视图的图层类型。我通过在我的自定义NSView
中覆盖makeBackingLayer()来实现此目的,如下所示:
override func makeBackingLayer() -> CALayer {
return CATextLayer()
}
我包含以防万一它与某种程度相关。
答案 0 :(得分:1)
虽然您可以将为CATextLayer
设置的文字视为此图层的内容,但这并不会使其成为contents
中的值该层的属性。事实上,我非常确定contents
的{{1}}属性只能是图像(或零)。如果值为CALayer
,则您为nil
,contentsGravity
和contentsRect
设置的值 - 所有这些值都在此contentsCenter
属性上运行 - 将不执行任何操作。< / p>
我的猜测是文本图层的contents
属性为nil(无论你设置的是什么文本值,都将保持为nil),这就是为什么没有发生的原因。