更改NSLayoutConstraint在iOS7中不起作用

时间:2014-01-06 09:09:59

标签: ios autolayout

我在viewDidLoad

中有这段代码
int height = 367 - self.vLayout.frame.size.height;
        int adjustHeight = height / 2;
        self.csPanelBottom.constant = adjustHeight - 2;
        if (height % 2 != 0) {
            adjustHeight += 1;
        }
        self.csPanelTop.constant = adjustHeight + 2;

将调整面板以使屏幕居中。 一切正常,我得到iOS6和iOS7的正确adjustHeight

但是当我在iOS7上设置常量时它没有更新。布局仍然相同。

我不知道是什么原因导致这种情况,因为我有另一个页面使用了相同的代码,并且页面没有这样的问题。

知道什么可能导致这个问题,我该如何解决? 感谢。

1 个答案:

答案 0 :(得分:3)

最有可能的是,要填充更改,您需要添加

[self.view setNeedsLayout];
[self.view layoutIfNeeded];

但是,将视图与中心对齐的方法并不正确。正确的方法是在Interface Builder中添加一个居中约束:

enter image description here

或代码中:

// Replace viewNeedingCenter and containerView with your actual views
[containerView addConstraint:
 [NSLayoutConstraint constraintWithItem:viewNeedingCenter
                              attribute:NSLayoutAttributeCenterY
                              relatedBy:NSLayoutRelationEqual
                                 toItem:containerView
                              attribute:NSLayoutAttributeCenterY
                             multiplier:1.0 constant:0]];