在视图显示在屏幕之前,我在哪里更新约束?

时间:2015-07-17 10:57:32

标签: ios autolayout nslayoutconstraint

我需要在屏幕上显示视图之前更新一些NSLayoutConstraints,具体取决于设备的屏幕尺寸。

我想要做的是这个更新对于用户来说是不可见的。 我不知道我能做到这一点,因为: - 如果我这样做:

- (void)viewWillLayoutSubviews

我的UIViewController它被调用两次所以我对我的约束进行了两次计算,我不想设置一个bool或一个计数器...... - 如果我这样做:

- (void)viewDidLoad

它不起作用,因为我根据视图控制器的视图计算我的约束值,此时此视图控制器的高度为0。

我看到有很多自动布局方法(setNeedsUpdate ...) 如果有人能告诉我在viewController lifeCycle中只有一次更新约束的最佳方法,那就太棒了。

感谢您的帮助! (N.B:自动布局概念对我来说是新的。)

2 个答案:

答案 0 :(得分:0)

尝试在视图控制器上覆盖updateViewConstraints。 (别忘了给超级打电话;))

See Apple docs here

答案 1 :(得分:0)

您可以从故事板创建高度限制的出口。

@property(强,非原子)IBOutlet NSLayoutConstraint * heightForYourView;

&安培;在viewDidLoad中编写以下代码,它将自动更改大小

//if you want to change the size as per device check device type in my case it iphone6 
if (IS_IPHONE_6)
    {
        self.heightForYourView.constant=250;//height you want
    }