在开发中 我们有时候需要改变某个空间的约束条件 也就是更改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]; } }];
效果图:
参考: