为啥这些约束不起作用?

Posted

技术标签:

【中文标题】为啥这些约束不起作用?【英文标题】:Why aren't these constraints working?为什么这些约束不起作用? 【发布时间】:2013-06-24 14:21:04 【问题描述】:

我以编程方式在 UIView 内的三个视图上设置以下约束:

UIView *view1 = ((UIViewController *)[self.viewControllers objectAtIndex:0]).view;
UIView *view2 = ((UIViewController *)[self.viewControllers objectAtIndex:1]).view;
UIView *view3 = ((UIViewController *)[self.viewControllers objectAtIndex:2]).view;

NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(view1, view2, view3);
[self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[view1(==320)]-0-[view2(==320)]-0-[view3(==320)]|" options:0 metrics:0 views:viewsDictionary]];

我的意图是每个视图都是 320 像素宽,彼此齐平,没有间隙,并在包含 UIView 的左边缘上查看一个。

但是,在编译时,视图会一个接一个地排列,我会在控制台中看到以下内容:

Unable to simultaneously satisfy constraints.
    Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 
(
    "<NSLayoutConstraint:0x211811c0 H:|-(0)-[UIView:0xc683790]   (Names: '|':UIView:0xc683320 )>",
    "<NSAutoresizingMaskLayoutConstraint:0x21179820 h=-&- v=-&- UIView:0xc683790.midX == UIView:0xc683320.midX - 340>",
    "<NSLayoutConstraint:0x211793d0 H:[UIView:0xc6a50c0]-(0)-|   (Names: '|':UIView:0xc683320 )>",
    "<NSLayoutConstraint:0x21179390 H:[UIView:0xc6a50c0(320)]>",
    "<NSLayoutConstraint:0x21179350 H:[UIView:0xc6a05f0]-(0)-[UIView:0xc6a50c0]>",
    "<NSLayoutConstraint:0x211563d0 H:[UIView:0xc6a05f0(320)]>",
    "<NSLayoutConstraint:0x21156390 H:[UIView:0xc683790]-(0)-[UIView:0xc6a05f0]>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x21179350 H:[UIView:0xc6a05f0]-(0)-[UIView:0xc6a50c0]>

【问题讨论】:

【参考方案1】:

尝试设置

[view setTranslatesAutoresizingMaskIntoConstraints:NO];

对于您的所有观点,通常足以解决此类问题。

【讨论】:

以上是关于为啥这些约束不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个按钮约束设计不起作用?

为啥这个 Check 约束不起作用?

为啥自动布局约束不起作用?

为啥默认约束在mysql中不起作用? [复制]

为啥我的约束在我的 xib 文件中不起作用

为啥django模型层的null和blank约束不起作用