能否对UIEdgeInsets进行动画处理?

6
我一直在尝试动画改变UIEdgeInsets。我已经尝试使用UIView.animateWithDuration,但是插图只是跳到最终值。有人知道这是否是无法动画化的属性吗?或者更好的是,有没有人知道如何动画化插图?
// Starting inset values
self.searchField.placeHolderInset = UIEdgeInsets(top: 0, left: 110, bottom: 0, right: 10)

// Animation block
UIView.animateWithDuration(0.1, animations: {
        self.searchField.placeHolderInset = UIEdgeInsets(top: 0, left: 18, bottom: 0, right: 10)
})

与其在0.1秒内向左移动92个像素,文本会直接跳到最终值。 searchField 是一个 UITextField.placeHolderInset 是用于确定 UITextField 占位符文本插图的 UIEdgeInset。

编辑:另一种实现所需效果的方法是将 UITextField.textAlignment.Center 更改为 .Left,但这也不会产生动画效果。


你尝试过增加动画持续时间的值吗?比如0.4秒。 - Vizllx
1
尝试在动画块内调用 self.searchField.layoutIfNeeded()。这样有帮助吗? - rob mayoff
@robmayoff,你,先生,非常聪明。那解决了问题。想发布成答案,这样我可以接受它吗? - Clay Ellis
1个回答

5

在动画块内部,需要对视图调用layoutIfNeeded()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接