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

Where do I update my constraint before the view is on screen?

我需要根据设备的屏幕尺寸在视图出现在屏幕上之前更新一些 NSLayoutConstraints

我想要做的是让用户看不到这个更新。 而且我不知道在哪里可以做到这一点,因为: - 如果我在 :

中这样做

- (void)viewWillLayoutSubviews

我的 UIViewController 它被调用了两次所以我对我的约束进行了两次计算并且我不想设置 bool 或计数器...... - 如果我在 :

中这样做

- (void)viewDidLoad

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

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

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

尝试覆盖视图控制器上的 updateViewConstraints。 (别忘了调用 super ;))

See Apple docs here

您可以从情节提要中创建高度限制的出口。

@属性(强,非原子)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
    }