Ios 自动布局约束更改不会设置动画

Ios 自动布局约束更改不会设置动画,ios,ios7,autolayout,uiviewanimation,ios10,Ios,Ios7,Autolayout,Uiviewanimation,Ios10,我正在学习教程中的动画自动布局 一切都很顺利 当我尝试在我的应用程序中使用这个概念,尝试从下到上设置设置屏幕(UIView)的动画时,当设置屏幕只是一个空的UIView时,效果非常好 但如果我将UILabel作为子视图添加到此设置屏幕,动画就会消失。 从设置屏幕中删除此UILabel时,动画可见 这是我连接的插座 __weak IBOutlet UIView *settingsView; __weak IBOutlet NSLayoutConstraint *settingsBottomCon

我正在学习教程中的动画自动布局

一切都很顺利

当我尝试在我的应用程序中使用这个概念,尝试从下到上设置设置屏幕(UIView)的动画时,当设置屏幕只是一个空的UIView时,效果非常好

但如果我将UILabel作为子视图添加到此设置屏幕,动画就会消失。 从设置屏幕中删除此UILabel时,动画可见

这是我连接的插座

__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];