2014-12-30 3 views
6

Я пытаюсь настроить IOS 8 авто клеящих клеток в UICollectionViewController:
я создал базовую конструкцию с помощью раскадровки и проектируемой один UICollectionViewCell там с ярлыком ограничений в пределы клетка. Затем я связал метку ячейки с классом Cell, чтобы иметь доступ к ней программно.
Без указания estimatedItemSize все работает нормально (за исключением автоматического определения размера, конечно).UICollectionView Cell Auto Size с AutoLayout IOS 8

Когда я указываю estimatedItemSize так:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    UICollectionViewFlowLayout *layout = (UICollectionViewFlowLayout *)self.collectionViewLayout; 
    layout.estimatedItemSize = CGSizeMake(100.0f, 30.0f); 
} 

сбой приложения с этими сообщениями об ошибках:

the behavior of the UICollectionViewFlowLayout is not defined because: 
the item width must be less than the width of the UICollectionView minus the section insets left and right values. 
Please check the values return by the delegate. 

Я думаю, я устанавливаю estimatedItemSize в неправильном месте, или, если у меня уже есть заданный размер элемента, установленный в раскадровке, поэтому он каким-то образом противоречит предполагаемому размеру.

ответ

4

Ответ на собственный вопрос, так как я выяснил причину проблемы:
Чтобы эта функция работала, UILabel должна иметь ширину меньше ширины UICollectionView. Даже если в Storyboard это выглядит нормально, если AutoLayout используется, ширина должна быть ограничена, например. в моем случае я сделал ограничение less or equal 320. Без него ярлык растет до очень большой ширины, но только с одной строкой. При применении этого ограничения завершение переноса строк началось, и метка выросла только по высоте, а не по ширине.

+0

Да, он должен работать, но обратите внимание, что для iphone 6 и 6+ ваш ярлык не будет покрывать всю ширину экрана ... – jerrygdm

+0

Я сделал выход и изменил значение ограничения во время выполнения на ширину экрана телефона. –

+0

У меня есть ячейка шириной 150, но ее размер не изменяется для iphone 6 и 6 plus. вы можете найти его здесь http://stackoverflow.com/questions/27981200/how-to-resize-uicollectionviewcell-in-iphone-6-and-6-plus-using-autolayout – Rugmangathan

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