2

我正在尝试让我的容器视图正常工作。问题是当将乘数更改为与 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];
4

2 回答 2

2

我成功使用了relatedBy:NSLayoutRelationGreaterThanOrEqual。

例如:

        [self.view addConstraint:

             [

              NSLayoutConstraint

              constraintWithItem: _accountRegisteredDateLabel
              attribute:NSLayoutAttributeWidth
              relatedBy:NSLayoutRelationGreaterThanOrEqual
              toItem:self.view
              attribute:NSLayoutAttributeWidth
              multiplier:.30
              constant:0


              ]

         ];
于 2014-08-04T16:45:37.007 回答
0

我想我会回答我自己的问题。我最终将一个视图乘数设置为 0.609375,另一个设置为 0.390625 这对我来说非常有用!

为什么它以 0.4 和 0.6 失败是因为它没有与总空间相加。我的两个视图将彼此相邻,总空间为 1024 像素(ipad)。

0.4 * 1024 = 409,6

0.6 * 1024 = 614,4

我的理解是,constraintWithItem 方法不关心余数并抛出错误。

所以只要想出一个不会给你任何余数的数字

0.390625 * 1024 = 400

0.609375 * 1024 = 624

于 2013-01-26T00:55:07.863 回答