NSLayoutConstraints 可以设置动画吗? [复制]

2023-11-23

我正在尝试对一些视图进行动画处理,以便它们在横向时被巨大的键盘挡住。如果我只是简单地对框架进行动画处理,效果会很好,但其他人建议这会适得其反,我应该更新 NSLayoutConstraints。然而,它们似乎不可动画。有人让他们成功工作了吗?

//heightFromTop is an NSLayoutConstraint referenced from IB
[UIView animateWithDuration:0.25 animations:^{
    self.heightFromTop.constant= 550.f;
}];

结果是立即跳跃到所讨论的高度。


只需遵循这个确切的模式:

self.heightFromTop.constant = 550.0f;
[myView setNeedsUpdateConstraints];

[UIView animateWithDuration:0.25f animations:^{
   [myView layoutIfNeeded];
}];

where myView是视图self.heightFromTop被添加到。您的视图正在“跳跃”,因为您在动画块中所做的唯一事情就是设置约束,这不会立即导致布局。在您的代码中,布局发生在您设置后的下一个运行循环中heightFromTop.constant,到那时你已经超出了动画块的范围。

在斯威夫特 2 中:

self.heightFromTop.constant = 550
myView.setNeedsUpdateConstraints()

UIView.animateWithDuration(0.25, animations: {
   myView.layoutIfNeeded()
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NSLayoutConstraints 可以设置动画吗? [复制] 的相关文章

随机推荐