为什么我的 CATextLayer 不响应 contentsGravity 属性?
Why does my CATextLayer not respond to the contentsGravity property?
我正在创建一个带有 layer-backed NSView
的 Cocoa 应用程序。我已将支持视图的图层自定义为 CATextlayer
类型,因为此视图的主要目的是显示一些文本。
我在我的 init
过程中包含了以下行,它对我尝试过的任何内容重力常数都不起作用:
textLayer.contentsGravity = kCAGravityBottomRight
另一方面,以下确实生效:
textLayer.alignmentMode = kCAAlignmentRight
所以基本的水平对齐可以工作,但我无法在垂直方向上调整 space。
在CATextLayer
中指定文本定位的最佳方式是什么?我也一直在尝试修改NSParagraphStyle
中的属性支持属性字符串,但这似乎也无法定位文本?
如有任何帮助,我们将不胜感激。
===
注意:CATextLayer 不是支持我的 NSView
的图层的子图层。它是支持我观点的图层类型。我通过在我的自定义 NSView
中覆盖 makeBackingLayer() 实现了这一点,如下所示:
override func makeBackingLayer() -> CALayer {
return CATextLayer()
}
我把它包括在内,以防它有某种相关性。
虽然您可以将您为 CATextLayer
设置的文本视为该图层的 content,但这并不意味着它就是驻留在contents
属性 该层。事实上,我很确定 contents
属性 的 CALayer
只能是图像(或 nil)。如果该值为 nil
,则您为 contentsGravity
、contentsRect
和 contentsCenter
设置的值 - 所有这些值都在此 contents
属性 上运行 - 将什么都不做。
我的猜测是您的文本层的 contents
属性 为 nil(并且无论您设置什么文本值都将保持为 nil),这就是为什么什么都没有发生的原因。
我正在创建一个带有 layer-backed NSView
的 Cocoa 应用程序。我已将支持视图的图层自定义为 CATextlayer
类型,因为此视图的主要目的是显示一些文本。
我在我的 init
过程中包含了以下行,它对我尝试过的任何内容重力常数都不起作用:
textLayer.contentsGravity = kCAGravityBottomRight
另一方面,以下确实生效:
textLayer.alignmentMode = kCAAlignmentRight
所以基本的水平对齐可以工作,但我无法在垂直方向上调整 space。
在CATextLayer
中指定文本定位的最佳方式是什么?我也一直在尝试修改NSParagraphStyle
中的属性支持属性字符串,但这似乎也无法定位文本?
如有任何帮助,我们将不胜感激。
===
注意:CATextLayer 不是支持我的 NSView
的图层的子图层。它是支持我观点的图层类型。我通过在我的自定义 NSView
中覆盖 makeBackingLayer() 实现了这一点,如下所示:
override func makeBackingLayer() -> CALayer {
return CATextLayer()
}
我把它包括在内,以防它有某种相关性。
虽然您可以将您为 CATextLayer
设置的文本视为该图层的 content,但这并不意味着它就是驻留在contents
属性 该层。事实上,我很确定 contents
属性 的 CALayer
只能是图像(或 nil)。如果该值为 nil
,则您为 contentsGravity
、contentsRect
和 contentsCenter
设置的值 - 所有这些值都在此 contents
属性 上运行 - 将什么都不做。
我的猜测是您的文本层的 contents
属性 为 nil(并且无论您设置什么文本值都将保持为 nil),这就是为什么什么都没有发生的原因。