更改CATextLayer的高度时文本会跳转

时间:2015-05-30 10:35:15

标签: ios core-animation calayer catextlayer

当我更改CATextLayer的高度时,会从上方(或下方)进入新文本,如下图所示。我怎么能阻止这个?

@IBAction func Tap(sender: UIButton) {
    counter += 1
    CATransaction.begin()
    CATransaction.setAnimationDuration(8.0)
    txtLay!.frame = frameFromCounter()
    CATransaction.commit()
}

enter image description here

1 个答案:

答案 0 :(得分:1)

CATextLayer通过drawInContext:方法绘制自己,因此对渲染表示的任何更改(例如更改string属性)也会修改图层的contents。在您的情况下,您需要调整图层大小,从而导致支持商店调整大小,这会更改contents,从而为该属性添加隐式动画。

如果您不希望动画发生,可以使用actions字典禁用隐式contents动画:

txtLay!.actions = ["contents" : NSNull()]

然而,在这种情况下禁用contents动画会导致跳跃,因此您可能最好不要更改CATextLayer的界限,只是将其嵌入到超级层中以提供任何你想要的额外造型/布局。