2015-02-23 3 views
1

У меня возникают проблемы с ограничениями, на которые я не могу опустить голову. Я думаю, что было бы очень полезно, если бы я лучше понял сообщения об ошибках (особенно связанные с NSLayoutConstraints) в окне консоли. Вот пример:NSLayoutConstraint «Невозможно одновременно удовлетворить ограничения» Ошибки и способы их интерпретации

У меня есть это ограничение:

NSLayoutConstraint(item: mainView, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Height, multiplier: 1, constant: 0) 

Который имеет смысл для меня, я хочу сделать mainView точно такую ​​же высоту, как self.view. Однако это порождает ошибку:

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:0x7a94fa10 UIView:0x7a9f95c0.height == UIView:0x7a9d1660.height>", 
    "<NSAutoresizingMaskLayoutConstraint:0x7a9488a0 h=--& v=--& V:[UIView:0x7a9f95c0(110)]>", 
    "<NSLayoutConstraint:0x7a948490 'UIView-Encapsulated-Layout-Height' V:[UIView:0x7a9d1660(430)]>" 
) 

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x7a94fa10 UIView:0x7a9f95c0.height == UIView:0x7a9d1660.height> 

Я комментировал все другие ограничения для этого, кроме одного, и все же я до сих пор получаю эту ошибку. Правильно ли я считаю, что ограничение противоречит самому себе?

Может ли кто-нибудь указать мне в правильном направлении, как исправить эту проблему?

Самое главное, если кто-нибудь может помочь мне понять эти сообщения NSLayoutConstraint, которые были бы чрезвычайно полезными.

-

Пожалуйста, обратите внимание, я использую Swift здесь, но я не возражаю, если ответы на Objective C.

+0

Является mainView динамическим/статическим, который находится в Interface Builder ..? Если он статичен, тогда вы можете выбрать как представление, так и MainView и сохранить высоту, равно как и ограничения на это ..! – Vidhyanand

+0

Я создаю все свои UIViews программно – Jimmery

+1

set mainView.translatesAutoresizingMaskIntoConstraints to NO. – Mornirch

ответ

4

mainView.translatesAutoresizingMaskIntoConstraints = NO. // ObjC mainView.translatesAutoresizingMaskIntoConstraints = false. // Swift

Он будет работать!

thx

+0

Но используйте false вместо NO. –

+0

Я забыл ...., @ Dániel Nagy – Mornirch

Смежные вопросы