У меня проблемы с ограничениями в VFL на iOS 8, а на 6 и 7 все в порядке. Это ограничение:Автозапуск iOS 8, VFL и маржа равны или больше
H:|-margin-[_imageView]-(=>margin)-[_label]-margin-|
Оба _imageView_
и _label
получают правильную внутреннюю ширину, а маржа растет, как и ожидалось. Я хочу, чтобы достичь
|-[_imageView]-------------------------------[some text]-|
|-[_imageView]---------------------------[a larger text]-|
|-[_imageView]-----------------------[a very large text]-|
|-[_imageView]-[a very very very very very very larg...]-|
Это нормально визуально, но это вызывает сломанное исключение ограничения:
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x7b856ee0 H:[UIImageView:0x7b8ef1f0]-(>=12)-[UILabel:0x7b8e7c60'Test']>
Там нет никакой двусмысленности после печати _autolayoutTrace
.
Однако, если ограничение связанно не маркирует только там не проблема:
H:|-margin-[_label1]-(=>margin)-[_label2]-margin-|
Проблема может быть решена, следуя следующие шаги:
Изменения ограничения извлекая >=
и добавляющих приоритеты:
H:|-margin-[_imageView]-([email protected])-[_label]-margin-|
Установка приоритета обнимать в _imageView
[_imageView setContentHuggingPriority:UILayoutPriorityDefaultHigh forAxis:UILayoutConstraintAxisHorizontal];
Установка сопротивления компрессионного _label
[_label setContentCompressionResistancePriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal];
С помощью этих правил не существует никаких проблем, на любой платформе. Все это необходимо на iOS 8? Это ошибка, или я делал это неправильно?
Спасибо.
Моя догадка заключается в том, что сломанное ограничение происходит из-за слишком длинной текстовой строки, чтобы почтить "> = 12"; то есть ширина полей + изображение + текст превышает ширину родительского представления. Это правда, что iOS 8 вводит макеты макета, но я не знаю достаточно о том, как это повлияет на заявления VFL для какой-либо помощи.Можете ли вы установить высоту линии вашего ярлыка равным 0, чтобы она могла расширяться вертикально и по-прежнему сохранять горизонтальное ограничение? – NRitH
@NRitH ограничение прерывается всегда, независимо от длины текста. Я не могу изменить количество строк метки, текст должен быть усечен. – emenegro
Можете ли вы опубликовать полный журнал и трассировку стека, когда он жалуется на сломанное ограничение? Что произойдет, если вы не установите приоритет обхода контента и сопротивление сжатию метки? –