2015-02-27 5 views
0

Пример: у нас есть UICollectionView с полной шириной экрана. Это имеет 3 100 х 100 пикселей клеток. На моем iPad он будет распространять их по всей ширине, оставляя большие промежутки между каждой ячейкой, естественно, меньшие промежутки на устройстве с меньшим экраном, то есть на iPhone.UICollectionViewCell Auto Size?

Возможно ли, чтобы ширина ячейки автоматически менялась в зависимости от ширины экрана, чтобы устранить эти пробелы? Мне нужен только ожидаемый, как установлено, 5px интервал.

+0

Итак, вы хотите, чтобы 3 больших ячеек или более 3 ячеек при просмотре на iPad? Первый потребовал бы вернуть размер ячейки в UICollectionViewDelegate, в то время как более поздняя версия будет обрабатываться UICollectionViewLayout более или менее автоматически. –

+1

Посмотрите на мой ответ здесь, http://stackoverflow.com/questions/28620374/set-override-padding-in-uicollectionview-between-cells/28621804#28621804. Это в Swift, но это должно быть достаточно легко перевести на цель-c. Это просто вопрос установки элемента Item на основе пространства, которое у вас есть, после того, как вы разрешите любые пробелы, которые вы хотите. – rdelmar

+0

Если у меня было более 3 ячеек, оно может заполнить строку и перейти к новой строке. Или, если по-прежнему недостаточно ячеек для заполнения ширины экранов (1 строка), тогда пробелы будут меньше. Так что я пытаюсь достичь, независимо от того, сколько ячеек на экране подряд подряд, ячейки всегда растягиваются по экрану, так что единственный промежуток между ними - это заданный интервал. Я думаю, что у @rdelmar может быть ответ, у меня будет игра с этим решением. –

ответ

3

Шаг 1: Реализовать UICollectionViewDelegateFlowLayout

Шаг 2: использовать метод делегата UICollectionViewDelegateFlowLayout.

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize 
{ 
    return CGSizeMake((UIScreen.mainScreen().bounds.width-10)/3,120); //use height whatever you wants. 
} 

Шаг 3: Перейти к XIB или StoryBoard, где у Вас CollectionView.

Шаг 4: В XIB или StoryBoard, где у вас есть CollectionView нажмите на CollectionView.

Шаг 5: Перейти к InterfaceBuilder, то во второй последней вкладке (т.е. размер инспектор) установлен Min Разнос

для клеток = 5

Для линий = 5

Это Это.

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