对于 NSLayoutConstraint 不执行动画的处理:
Posted 高晓牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对于 NSLayoutConstraint 不执行动画的处理:相关的知识,希望对你有一定的参考价值。
在开发中 我们有时候需要改变某个空间的约束条件 也就是更改NSLayoutConstraint的值 (比如说我想在键盘顶部增加一个工具栏 让工具栏随着键盘的位置变化而变化 有一个动画效果)但是发现NSLayoutConstraint会更改偏移量 但是并不会执行动画效果:
解决方案:调用 layoutIfNeeded 及时刷新布局方式
代码:
// 执行动画 [UIView animateWithDuration:duration animations:^{ // 工具条的Y值 == 键盘的Y值 - 工具条的高度 if (keyboardF.origin.y >= self.view.frame.size.height) { // 键盘的Y值已经远远超过了控制器 self.bottleHeight.constant = 0; //layoutIfNeeded不调用的话是不会产生动画效果的 只会显示最终的状态 [self.view layoutIfNeeded]; } else { self.bottleHeight.constant = keyboardF.size.height; [self.view layoutIfNeeded]; } }];
效果图:
参考:http://www.itstrike.cn/Question/a8cf36cd-9fd9-4c00-b2e4-a4da375961ce.html
以上是关于对于 NSLayoutConstraint 不执行动画的处理:的主要内容,如果未能解决你的问题,请参考以下文章
无法将“NSLayoutConstraint”类型的不可变值作为 inout 参数传递
NSLayoutConstraint 和动态 UITableViewCell 高度