我正在努力让我的容器视图正常工作。问题是当乘数变为不同于0.5的东西时我得到:
无法同时满足约束条件。
例如,如果我将* c2 multipier更改为0.4而* c8更改为0.6,则会出现上述错误。但如果我改回0.5,那一切都很好。我在这做错了什么? 我得到了一些限制,但它们用于垂直布局,所以我不认为它们是问题。
NSLayoutConstraint *c1 = [NSLayoutConstraint constraintWithItem: contentView
attribute: NSLayoutAttributeLeft
relatedBy: NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeLeft
multiplier:1.0
constant:0.0];
NSLayoutConstraint *c2 = [NSLayoutConstraint constraintWithItem: contentView
attribute: NSLayoutAttributeWidth
relatedBy: NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeWidth
multiplier:.4
constant:0.0];
// detailView
NSLayoutConstraint *c7 = [NSLayoutConstraint constraintWithItem: detailView
attribute: NSLayoutAttributeRight
relatedBy: NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeRight
multiplier:1.0
constant:0.0];
NSLayoutConstraint *c8 = [NSLayoutConstraint constraintWithItem: detailView
attribute: NSLayoutAttributeWidth
relatedBy: NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeWidth
multiplier:.6
constant:0.0];
答案 0 :(得分:2)
我使用relatedBy成功了:NSLayoutRelationGreaterThanOrEqual。
例如:
[self.view addConstraint:
[
NSLayoutConstraint
constraintWithItem: _accountRegisteredDateLabel
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationGreaterThanOrEqual
toItem:self.view
attribute:NSLayoutAttributeWidth
multiplier:.30
constant:0
]
];
答案 1 :(得分:0)
我以为我会回答我自己的问题。 我最终将一个视图乘数设置为0.609375,另一个设置为0.390625 这对我很有用!
为什么它以0.4和0.6失败是因为它没有与总空间相加。 我的两个视图将彼此相邻,总空间为1024px(ipad)。
0.4 * 1024 = 409,6
0.6 * 1024 = 614,4
我的理解是,不管怎样,constraintWithItem方法都不关心余数并抛出错误。
所以只想出一个不会给你任何剩余的数字
0.390625 * 1024 = 400
0.609375 * 1024 = 624