我正在尝试对一些视图进行动画处理,以便它们在横向时被巨大的键盘挡住。如果我只是简单地对框架进行动画处理,效果会很好,但其他人建议这会适得其反,我应该更新 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(使用前将#替换为@)