停止细胞动画

时间:2016-03-25 03:35:16

标签: ios swift animation

在我的tableView中我使用带有两个自定义标签的自定义单元格。最终,这些标签的文本会发生变化,但同时调用layoutIfNeeded()来激活其他一些东西。这导致标签中的文字也有动画,我试图阻止它。

我用来更改文字的代码:

func tapped(recognizer: UIGestureRecognizer) {
    let path = NSIndexPath(forRow: myData.count - 1, inSection: 0)
    let cell = tableView.cellForRowAtIndexPath(path) as! CustomCell

    cell.infoLabel.text = "Changing text here"

    UIView.animateWithDuration(0.5) { self.anotherView.layoutIfNeeded() }
}

为防止标注动画,我尝试在CustomLabelCustomCell以及willDisplayCell中添加此标记:

override func layoutSubviews() {
    UIView.performWithoutAnimation { super.layoutSubviews() }
}

或者使用另一种方法阻止它在CustomLabelCustomCell中制作动画:

override func layoutSubviews() {
    CATransaction.begin()

    CATransaction.setDisableActions(true)
    super.layoutSubviews()

    CATransaction.commit()
}

我还试过一个属性观察者设置文本并同时删除所有动画:

var text: String { 
    didSet { 
        infoLabel.text = text
        infoLabel.layer.removeAllAnimations()
    }
}

除非我使用,否则似乎无法正常工作

CATransaction.begin()

CATransaction.setDisableActions(true)
cell.infoLabel.text = "Changing text here"

CATransaction.commit()

但是我必须在我改变文字的地方使用它。是否有一个我忽视的地方更优雅地做到这一点?

0 个答案:

没有答案