Ios 自动布局约束更改不会设置动画
我正在学习教程中的动画自动布局 一切都很顺利 当我尝试在我的应用程序中使用这个概念,尝试从下到上设置设置屏幕(UIView)的动画时,当设置屏幕只是一个空的UIView时,效果非常好 但如果我将UILabel作为子视图添加到此设置屏幕,动画就会消失。 从设置屏幕中删除此UILabel时,动画可见 这是我连接的插座Ios 自动布局约束更改不会设置动画,ios,ios7,autolayout,uiviewanimation,ios10,Ios,Ios7,Autolayout,Uiviewanimation,Ios10,我正在学习教程中的动画自动布局 一切都很顺利 当我尝试在我的应用程序中使用这个概念,尝试从下到上设置设置屏幕(UIView)的动画时,当设置屏幕只是一个空的UIView时,效果非常好 但如果我将UILabel作为子视图添加到此设置屏幕,动画就会消失。 从设置屏幕中删除此UILabel时,动画可见 这是我连接的插座 __weak IBOutlet UIView *settingsView; __weak IBOutlet NSLayoutConstraint *settingsBottomCon
__weak IBOutlet UIView *settingsView;
__weak IBOutlet NSLayoutConstraint *settingsBottomConstraint;
__weak IBOutlet NSLayoutConstraint *settingsViewHeightConstraint;
查看加载设置方法(设置视图)
隐藏/取消隐藏方法
- (IBAction)showSettingsScreen:(id)sender {
if (isSettingsHidden) {
settingsBottomConstraint.constant = 0;
[settingsView setNeedsUpdateConstraints];
[UIView animateWithDuration:.3 animations:^{
[settingsView layoutIfNeeded];
}];
}
else{
settingsBottomConstraint.constant = - settingsViewHeightConstraint.constant;
[settingsView setNeedsUpdateConstraints];
[UIView animateWithDuration:0.3 animations:^{
[settingsView layoutIfNeeded];
}];
}
isSettingsHidden = !isSettingsHidden;
}
我的问题似乎与
我找到了答案
而不是
[settingsView layoutIfNeeded];
这句话很有魅力
[self.view layoutIfNeeded];
我想我们需要在父视图上执行layoutifneedd方法,而不仅仅是在试图设置动画的视图上
更新:
正如codyko在评论中指出的,这是iOS 7、iOS 10所必需的。
对于iOS 8,此问题不存在。UILabel上的约束条件是什么?@Iftekhar,我已经尝试了这两个选项。1.只需将标签拖放到UIView(即无约束)和2。向superview添加宽度、高度和顶部空间的约束并导致superview。请注意,[settingsView layoutIfNeeded]在iOS8中有效,但在iOS7中无效。在iOS7中,您需要调用[self.view layoutifneed],但如果您只在iOS8中工作,则不需要更新整个视图的约束。
[self.view layoutIfNeeded];