更改NSLayoutConstraint常量不在layoutSubviews中工作

时间:2014-12-04 07:31:22

标签: ios iphone autolayout

当视图设置为横向模式时,我正在尝试更改UIButton的宽度。但调用该方法是因为我在那里设置了一个断点,但按钮的宽度不会改变。我将一个IBOutlet约束添加到按钮的宽度名为:globalButtonWidthConstraint。

我目前的代码:

- (void)layoutSubviews {
    [super layoutSubviews];

    CGSize screenSize = [[UIScreen mainScreen] bounds].size;
    CGFloat screenH = screenSize.height;
    CGFloat screenW = screenSize.width;
    BOOL isLandscape =  !(self.frame.size.width == (screenW*(screenW<screenH))+(screenH*(screenW>screenH)));

    if (isLandscape) {
        self.globalButtonWidthConstraint.constant = 100;
        [self layoutIfNeeded];
    } else {
        self.globalButtonWidthConstraint.constant = 47;
        [self layoutIfNeeded];
    }
}

1 个答案:

答案 0 :(得分:4)

尝试更新&#34; viewDidLayoutSubviews&#34;中的约束常量。

 -(void)viewDidLayoutSubviews
{

   [super viewDidLayoutSubviews];

  // Update constraint constant

   [self.view layoutSubviews];

}

它对我有用。

编辑:确保没有其他约束与此宽度约束冲突。