更改 CATextLayer 的高度时文本跳转
The text jumps when changing the height of a CATextLayer
当我更改 CATextLayer 的高度时,新文本从上方(或下方)进入,如下图所示。我怎样才能防止这种情况发生?
@IBAction func Tap(sender: UIButton) {
counter += 1
CATransaction.begin()
CATransaction.setAnimationDuration(8.0)
txtLay!.frame = frameFromCounter()
CATransaction.commit()
}
CATextLayer
通过 drawInContext:
方法绘制自身,因此对渲染表示的任何更改(例如更改 string
属性)也会修改 contents
层的。在您的情况下,您正在调整图层大小,导致后备存储调整大小,这会更改 contents
,从而向 属性.
添加隐式动画
如果您不希望动画发生,您可以使用 actions
字典来禁用隐式 contents
动画:
txtLay!.actions = ["contents" : NSNull()]
但是,禁用 contents
动画会在这种情况下导致跳跃,因此您最好不要更改 CATextLayer
的边界,而只是将其嵌入到超层中以提供任何额外 styling/layout 你想要的。
当我更改 CATextLayer 的高度时,新文本从上方(或下方)进入,如下图所示。我怎样才能防止这种情况发生?
@IBAction func Tap(sender: UIButton) {
counter += 1
CATransaction.begin()
CATransaction.setAnimationDuration(8.0)
txtLay!.frame = frameFromCounter()
CATransaction.commit()
}
CATextLayer
通过 drawInContext:
方法绘制自身,因此对渲染表示的任何更改(例如更改 string
属性)也会修改 contents
层的。在您的情况下,您正在调整图层大小,导致后备存储调整大小,这会更改 contents
,从而向 属性.
如果您不希望动画发生,您可以使用 actions
字典来禁用隐式 contents
动画:
txtLay!.actions = ["contents" : NSNull()]
但是,禁用 contents
动画会在这种情况下导致跳跃,因此您最好不要更改 CATextLayer
的边界,而只是将其嵌入到超层中以提供任何额外 styling/layout 你想要的。