2015-02-12 3 views
4

Я пытаюсь отлаживать + понимать ограничения автоопределения, и я замечаю, что при отладке представления с помощью xcode (используя классный слой) я заметил, что на одном элементе в представлении ограничения выглядят так:Недостатки greyed-out в Xcode

enter image description here

и вид действительно игнорирует эти ограничения.

Все ограничения имеют одинаковый приоритет (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?

ответ

6

XCode 6 теперь поддерживает различные макеты. Эти серые ограничения существуют в Компактная ширина | Любая высота макет, например, но вы редактируете сейчас Любая ширина | Любые Высота.

Более подробно: Storyboard View Elements Greyed Out

1

Это зависит от многого. Если вы не используете классы размера, то серые - это удаленные. И вам нужно удалить их во второй раз. Как бы глупо это ни звучало.

Если вы используете классы размеров, это означает, что ваш текущий класс размера отличается от ограничения по маске. (однако возможен и первый сценарий ...)

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

+0

Интересно, почему это происходит. :( – alcarv

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