2013-05-20 4 views
0

Я пытаюсь отлаживать конфликт автоматического макета в моем пользовательском интерфейсе.Ошибка автоматического макета в UICollectionViewCell

Я установил весь пользовательский интерфейс, используя IB.

Проблема, связанная с объектами внутри подкласса UICollectionView, называется FrameCell.

FrameCell имеет UIImageView и UILabel, которые расположены по центру в горизонтальной плоскости.

и вертикальные ограничения, как это ...

V:|-20-[UIImageView]-50-[UILabel(==26)]-25-| 

т.е. высота UIImageView варьируется в зависимости от размера ячейки.

Однако я получаю ошибку ...

( 
    "<NSAutoresizingMaskLayoutConstraint:0x20087d00 h=--& v=--& V:[FrameCell:0x1edaf4a0(0)]>", 
    "<NSLayoutConstraint:0x1edafc10 UIImageView:0x1edaf960.top == FrameCell:0x1edaf4a0.top + 20>", 
    "<NSLayoutConstraint:0x1edafb50 FrameCell:0x1edaf4a0.bottom == UILabel:0x1edaf5c0.bottom + 25>", 
    "<NSLayoutConstraint:0x1edafb10 V:[UIImageView:0x1edaf960]-(50)-[UILabel:0x1edaf5c0]>" 
) 

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x1edafb10 V:[UIImageView:0x1edaf960]-(50)-[UILabel:0x1edaf5c0]> 

ошибка почти наверняка идет от NSAutoresizingMaskLayoutConstraint, но я не знаю, как избавиться от этого ?! Почему бы установить высоту FrameCell на 0 ?!

Если я пытаюсь отключить translatesAutoresizingMaskIntoConstraints в ячейке, я получаю ошибку внутреннего согласования. Я настраиваю все на использование IB, поэтому я не уверен, откуда эта AutoResizingMask?

+0

Как и где вы определили, какой должна быть высота каждой ячейки в представлении коллекции? Похоже, что где-то это происходит не так и говорит вашей ячейке, чтобы она была равна нулю – jrturton

+0

У меня есть настраиваемый макет потока, и я устанавливаю itemSize в 220x220. – Fogmeister

ответ

2

Интересно, если IB имеет те же проблемы при работе с ограничениями в UICollectionViewCells как он работает с UITableViewCells?

См @Adrians ответить на этот вопрос: contentView not indenting in iOS 6 UITableViewCell prototype cell

+0

Boom! Получил это в одном! Благодарю. Мне пришлось удалить все ограничения из FrameCell, а затем добавить мои собственные ограничения в FrameCell.contentView. Спасибо: D Очень странно, что мне нужно было это сделать ... – Fogmeister

+2

Да, они вводят Auto Layout в эту замечательную фанфару, а затем не могут заставить IB работать с ним для UITableViewCells и UICollectionViewCells. Безумие! –

+0

Пальцы скрещены для WWDC. – Fogmeister

1

Пожалуйста, попробуйте это может быть помочь вам полный , если вы хотите, чтобы исправить размер этикетки, чем использование ==

V:|-20-[UIImageView]-50-[UILabel(==26)]-25-| 
+0

Извинения, буквальный макет - это просто описание. Я действительно использую IB, чтобы добавить эти ограничения макета. Это был просто способ передать, каковы ограничения компоновки. +1 за хорошее место: D – Fogmeister