Я пытаюсь отлаживать + понимать ограничения автоопределения, и я замечаю, что при отладке представления с помощью xcode (используя классный слой) я заметил, что на одном элементе в представлении ограничения выглядят так:Недостатки greyed-out в Xcode
и вид действительно игнорирует эти ограничения.
Все ограничения имеют одинаковый приоритет (1000), так как я хочу их всех. Все ограничения были сделаны с помощью построителя интерфейса, а не через код, и в IB нет предупреждений или конфликтов.
Но во время исполнения я вижу это
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:0x79684f10 V:[UIImageView:0x79686800(>=160)]>",
"<NSLayoutConstraint:0x7968a310 V:[UIImageView:0x79686800]-(130.5)-| (Names: '|':UIView:0x79686790)>",
"<NSLayoutConstraint:0x7968a340 V:|-(0)-[UIImageView:0x79686800] (Names: '|':UIView:0x79686790)>",
"<NSLayoutConstraint:0x796997b0 'UIView-Encapsulated-Layout-Height' V:[CoverCell:0x79686570(192)]>",
"<NSAutoresizingMaskLayoutConstraint:0x7969cd30 h=-&- v=-&- UIView:0x79686790.height == CoverCell:0x79686570.height>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x79684f10 V:[UIImageView:0x79686800(>=160)]>
Так что от этого я понимаю, что некоторые правила конфликта, но я не знаю, как читать этот
>=160
это правило на UIImageView так что он имел бы высоту по крайней мере 160, а 130,5 - нижнюю прописку изображения (поэтому при использовании systemLayoutSizeFittingSize:UILayoutFittingCompressedSize
высота не будет равна 0. Таким образом, минимальная высота для всей ячейки равна 160 + 130,5) Остальная часть ошибка, которую я делаю 'Т понять.
Что не так с ограничениями и почему конфликты ограничений возникают во время выполнения, а не в IB?
Интересно, почему это происходит. :( – alcarv