无法同时满足约束 - 在添加子视图时
Posted
技术标签:
【中文标题】无法同时满足约束 - 在添加子视图时【英文标题】:Unable to simultaneously satisfy constraints - while adding subview 【发布时间】:2013-10-24 08:44:59 【问题描述】:我在 xib 中使用故事板。
我从情节提要加载了UIViewController
,从xib加载了UIView
。我正在尝试将 xib 作为子视图添加到情节提要UIViewController
并将其设置为底部约束,如下所示:
TransactionsPickerViewController *_picker = [[TransactionsPickerViewController alloc] initWithNibName:nil bundle:nil];
[self.view addSubview:picker.view];
NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:picker.view
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeBottom
multiplier:1.0f constant:0.0f];
[self.view addConstraint:constraint];
它在调试控制台中导致此问题:
Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want...
UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x1090509e0 UIView:0x109440be0.bottom == UIView:0x109619ba0.bottom>",
"<NSAutoresizingMaskLayoutConstraint:0x109052400 h=-&- v=-&- UIView:0x109440be0.midY == UIView:0x109619ba0.midY - 140>",
"<NSAutoresizingMaskLayoutConstraint:0x109052470 h=-&- v=-&- UIView:0x109440be0.height == UIView:0x109619ba0.height - 280>"
)
这些自动调整大小的属性是从哪里来的,我可以摆脱它们以使其正常工作吗? Baically 我希望我的选择器视图在添加后坚持到父视图底部。
我试图在 xib 文件上禁用自动布局,但它并没有改变任何东西。
【问题讨论】:
【参考方案1】:您的错误可能是由于在将其添加为子视图之前未设置picker.view. translatesAutoresizingMaskIntoConstraints = NO;
。
但是,在我看来,您应该添加一个TransactionsPickerViewController
作为子视图控制器,而不仅仅是使用它的视图。请参阅以下部分:Implementing a Custom Container View Controller 和 Implementing a Container View Controller。
【讨论】:
这似乎可行,但是将 autoresizemask 设置为 NO 会导致子视图上的可点击组件无法响应交互,因为它们位于其他位置 @Xylian:正如我在回答中所说,您不应该直接从不同的控制器添加视图。请改用视图控制器容器。以上是关于无法同时满足约束 - 在添加子视图时的主要内容,如果未能解决你的问题,请参考以下文章