我有一个从xib创建的视图(self.printSettingsView)。我将此视图作为子视图添加到另一个视图(self.view)。我以编程方式添加约束如下:
[self.printSettingView setTranslatesAutoresizingMaskIntoConstraints: NO];
NSLayoutConstraint *leftConstraint = [NSLayoutConstraint constraintWithItem:self.printSettingView
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeLeading
multiplier:1.0
constant:0];
[self.view addConstraint:leftConstraint];
NSLayoutConstraint *topConstraint = [NSLayoutConstraint constraintWithItem:self.printSettingView
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:self.topBar
attribute:NSLayoutAttributeBottom
multiplier:1.0
constant:0];
[self.view addConstraint:topConstraint];
NSLayoutConstraint *heightConstraint = [NSLayoutConstraint constraintWithItem:self.printSettingView
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeHeight
multiplier:1.0
constant:0];
[self.view addConstraint:heightConstraint];
NSLayoutConstraint *widthConstraint = [NSLayoutConstraint constraintWithItem:self.printSettingView
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeWidth
multiplier:1.0
constant:0];
[self.view addConstraint:widthConstraint];
除高度外,所有其他约束都会生效。 我在这里做错了什么???
由于
答案 0 :(得分:0)
在不知道你的xib文件的约束或你期望发生什么与正在发生的事情(截图会有所帮助)的情况下,很难说。但是我确实有一个建议可能逻辑不正确。
第二个约束是将printViewSettings固定在topBar的底部,这部分是有意义的。然而,下一个将printViewSettings的高度设置为其superview的高度。这可能不符合您的要求,因为您的超级视图也包含您的topBar,因此可能比您预期的要大。你真正想要的是一个约束,它将printViewSettings的底部固定在superview的底部。
答案 1 :(得分:0)
对不起那些关于不完整信息的人。一个要点的问题是我在主视图中为子视图分配了一个约束,无论是约束的常量,子视图的大小保持不变。我发现问题是子视图反过来具有固定高度约束的组件(子视图)。我使它们与父视图的高度成比例,现在可以正常工作。