2014-11-29 6 views
0

У меня есть UICollectionViewCell в раскадровке, в которой есть UIImageView.Autolayout жалуется на ведущее/конечное пространство для UIImageView

UICollectionViewCell size is width: 189, height: 239. ImageView имеет следующие ограничения:

Trailing Space to cell = 31 
Leading Space to cell = 31 
Bottom Space to cell = 25 
Top Space to cell = 31 

получаю следующее сообщение об ошибке при запуске:

2014-11-28 19: 53: 33.934 AppName [1585: 35698] Невозможно одновременно удовлетворяют ограничениям , Вероятно, по крайней мере один из ограничений в следующем списке - это тот, который вы не хотите. Попробуйте: (1) посмотреть на каждое ограничение и попытаться выяснить, чего вы не ожидаете; (2) найти код, который добавил нежелательное ограничение или ограничения и исправить его. (Примечание: Если вы видите NSAutoresizingMaskLayoutConstraints, что вы не понимаете, обратитесь к документации для свойства UIView translatesAutoresizingMaskIntoConstraints) (

"<NSLayoutConstraint:0x7fa4a0d75220 H:[UIImageView:0x7fa4a0d743e0]-(31)-| (Names: '|':UIView:0x7fa4a0d73d40)>", 
"<NSLayoutConstraint:0x7fa4a0d752c0 H:|-(32)-[UIImageView:0x7fa4a0d743e0] (Names: '|':UIView:0x7fa4a0d73d40)>", 
"<NSAutoresizingMaskLayoutConstraint:0x7fa4a0d567a0 h=--& v=--& H:[UIView:0x7fa4a0d73d40(50)]>") 

будет пытаться восстановить разбив ограничение NSLayoutConstraint : 0x7fa4a0d75220 H: [UIImageView: 0x7fa4a0d743e0] - (31) - | (Имена: '|': UIView: 0x7fa4a0d73d40)>

Сделать символ ic в точке UIViewAlertForUnsatisfiableConstraints , чтобы поймать это в отладчике. Способы в категории UIConstraintBasedLayoutDebugging в UIView, перечисленные в , также могут быть полезными.

Я попытался изменить ведущие/конечные значения всеми способами (пробовал четные/нечетные числа) без каких-либо успехов. Чем это вызвано?

+0

это показывает ли вам список ограничений и сказать, какой из них он пытается сломать? Если да, отправьте эту информацию. – rdelmar

+0

обновленный вопрос, форматирование stackoverflow вызвало появление определенного текста – CaptainCOOLGUY

+0

Последнее ограничение говорит о том, что представление UIView: 0x7fa4a0d73d40, которое предположительно является вашей ячейкой, имеет ширину 50. Какой размер вы возвращаете для своей ячейки в представлении коллекции? источник данных? – rdelmar

ответ

6

Это известная ошибка в iOS 8 (см. Этот пост, Autoresizing issue of UICollectionViewCell contentView's frame in Storyboard prototype cell (Xcode 6, iOS 8 SDK) happens when running on iOS 7 only). Ячейка - это правильный размер, который вы устанавливаете в раскадровке, но размер содержимого содержимого ячейки остается на уровне 50x50, поэтому вы получаете ошибку ограничения. Это может быть исправлено путем добавления этой строки после создания ячейки в cellForItemAtIndexPath :,

cell.contentView.frame = cell.bounds 
+1

Спасибо, стоит отметить, что это произошло, несмотря на работу iOS8.1.1 – CaptainCOOLGUY

+0

Это все еще верно в iOS 9.3.4 –

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