У меня возникают проблемы с ограничениями, на которые я не могу опустить голову. Я думаю, что было бы очень полезно, если бы я лучше понял сообщения об ошибках (особенно связанные с 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.
Является mainView динамическим/статическим, который находится в Interface Builder ..? Если он статичен, тогда вы можете выбрать как представление, так и MainView и сохранить высоту, равно как и ограничения на это ..! – Vidhyanand
Я создаю все свои UIViews программно – Jimmery
set mainView.translatesAutoresizingMaskIntoConstraints to NO. – Mornirch