Расстояние между ячейками в UICollectionView
Как установить интервал между ячейками в разделе UICollectionView
? Я знаю, что есть свойство minimumInteritemSpacing
Я установил его в 5.0, но интервал не появляется 5.0. Я реализовал метод делегирования потока.
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section
{
return 5.0;
}
По-прежнему я не получаю желаемого результата. Я думаю, что это минимальный интервал. Нет ли способа, с помощью которого можно установить максимальный интервал?
![simulator sc]()
Ответы
Ответ 1
Я знаю, что тема старая, но если кому-то все еще нужен правильный ответ, то что вам нужно:
- Отменить стандартную раскладку потока.
-
Добавьте реализацию следующим образом:
- (NSArray *) layoutAttributesForElementsInRect:(CGRect)rect {
NSArray *answer = [super layoutAttributesForElementsInRect:rect];
for(int i = 1; i < [answer count]; ++i) {
UICollectionViewLayoutAttributes *currentLayoutAttributes = answer[i];
UICollectionViewLayoutAttributes *prevLayoutAttributes = answer[i - 1];
NSInteger maximumSpacing = 4;
NSInteger origin = CGRectGetMaxX(prevLayoutAttributes.frame);
if(origin + maximumSpacing + currentLayoutAttributes.frame.size.width < self.collectionViewContentSize.width) {
CGRect frame = currentLayoutAttributes.frame;
frame.origin.x = origin + maximumSpacing;
currentLayoutAttributes.frame = frame;
}
}
return answer;
}
где maximumSpacing может быть установлено на любое значение, которое вы предпочитаете. Этот трюк гарантирует, что пространство между ячейками будет ТОЧНО равным максимальномуSpacing!!
Ответ 2
Поддержка начального вопроса. Я попытался получить интервал 5px на UICollectionView
, но это не сработает, а с помощью UIEdgeInsetsMake(0,0,0,0)
...
В UITableView я могу сделать это, непосредственно указав координаты x, y в строке...
![enter image description here]()
Вот мой код UICollectionView:
#pragma mark collection view cell layout / size
- (CGSize)collectionView:(UICollectionView*)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
return [self getCellSize:indexPath]; // will be w120xh100 or w190x100
// if the width is higher, only one image will be shown in a line
}
#pragma mark collection view cell paddings
- (UIEdgeInsets)collectionView:(UICollectionView*)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {
return UIEdgeInsetsMake(0, 0, 0, 0); // top, left, bottom, right
}
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section {
return 5.0;
}
Обновление: решила мою проблему со следующим кодом.
![enter image description here]()
ViewController.m
#import "ViewController.h"
#import "MagazineCell.h" // created just the default class.
static NSString * const cellID = @"cellID";
@interface ViewController ()
@end
@implementation ViewController
#pragma mark - Collection view
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 1;
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return 30;
}
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
MagazineCell *mCell = (MagazineCell *)[collectionView dequeueReusableCellWithReuseIdentifier:cellID forIndexPath:indexPath];
mCell.backgroundColor = [UIColor lightGrayColor];
return mCell;
}
#pragma mark Collection view layout things
// Layout: Set cell size
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"SETTING SIZE FOR ITEM AT INDEX %d", indexPath.row);
CGSize mElementSize = CGSizeMake(104, 104);
return mElementSize;
}
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section {
return 2.0;
}
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section {
return 2.0;
}
// Layout: Set Edges
- (UIEdgeInsets)collectionView:
(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {
// return UIEdgeInsetsMake(0,8,0,8); // top, left, bottom, right
return UIEdgeInsetsMake(0,0,0,0); // top, left, bottom, right
}
@end
Ответ 3
Используя горизонтальный макет потока, я также получал 10-точечный интервал между ячейками. Чтобы удалить интервал, мне нужно было установить minimumLineSpacing
, а также minimumInterItemSpacing
на ноль.
UICollectionViewFlowLayout *flow = [[UICollectionViewFlowLayout alloc] init];
flow.itemSize = CGSizeMake(cellWidth, cellHeight);
flow.scrollDirection = UICollectionViewScrollDirectionHorizontal;
flow.minimumInteritemSpacing = 0;
flow.minimumLineSpacing = 0;
Кроме того, если все ваши ячейки имеют одинаковый размер, проще и эффективнее устанавливать свойство в макете потока непосредственно вместо использования методов делегатов.
Ответ 4
Помните, это минимальный интервал между строками, а не минимальный интервал между элементами или ячейкой. Потому что ваше направление прокрутки collectionView - ГОРИЗОНТАЛЬНОЕ.
Если он был вертикальным, то вам нужно установить пространство ячеек или пространство между элементами для горизонтального пространства между ячейками и межстрочный интервал для вертикального пространства между ячейками.
Версия Objective-C
- (CGFloat)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout*)collectionViewLayout
minimumLineSpacingForSectionAtIndex:(NSInteger)section
{
return 20;
}
Swift версия:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 20
}
Ответ 5
Попробуйте этот код, чтобы обеспечить промежуток между 5 пунктами между пунктами:
- (UIEdgeInsets)collectionView:(UICollectionView *) collectionView
layout:(UICollectionViewLayout *) collectionViewLayout
insetForSectionAtIndex:(NSInteger) section {
return UIEdgeInsetsMake(0, 0, 0, 5); // top, left, bottom, right
}
- (CGFloat)collectionView:(UICollectionView *) collectionView
layout:(UICollectionViewLayout *) collectionViewLayout
minimumInteritemSpacingForSectionAtIndex:(NSInteger) section {
return 5.0;
}
Ответ 6
Быстрая версия самого популярного ответа. Пространство между ячейками будет равно cellSpacing
.
class CustomViewFlowLayout : UICollectionViewFlowLayout {
let cellSpacing:CGFloat = 4
override func layoutAttributesForElementsInRect(rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
if let attributes = super.layoutAttributesForElementsInRect(rect) {
for (index, attribute) in attributes.enumerate() {
if index == 0 { continue }
let prevLayoutAttributes = attributes[index - 1]
let origin = CGRectGetMaxX(prevLayoutAttributes.frame)
if(origin + cellSpacing + attribute.frame.size.width < self.collectionViewContentSize().width) {
attribute.frame.origin.x = origin + cellSpacing
}
}
return attributes
}
return nil
}
}
Ответ 7
Я нашел очень простой способ настроить интервал между ячейками или строками с помощью IB.
Просто выберите UICollectionView из файла раскадровки /Xib и нажмите Inspector размера, как показано на рисунке ниже.
![введите описание изображения здесь]()
Для конфигурирования пространства программно используйте следующие свойства.
1) Для установки пробела между строками.
[self.collectionView setMinimumLineSpacing:5];
2) Для установки пробела между элементами/ячейками.
[self.collectionView setMinimumInteritemSpacing:5];
Ответ 8
Обратите внимание на имя свойства minimumInterItemSpacing. Это будет минимальный интервал между элементами , а не точным интервалом. Если вы установите для параметра minimumInterItemSpacing какое-то значение, вы можете убедиться, что интервал не будет меньше значения. Но есть шанс получить более высокую ценность.
Фактически, расстояние между элементами зависит от нескольких факторов itemSize и sectionInset. В представлении коллекции динамически размещайте содержимое на основе этих значений. Поэтому вы не можете гарантировать точное расстояние. Вы должны выполнить пробную и пробную версию с sectionInset и minimumInterItemSpacing.
Ответ 9
Ответ для Swift 3.0, Xcode 8
1.Убедитесь, что вы установили делегат представления коллекций
class DashboardViewController: UIViewController {
@IBOutlet weak var dashboardCollectionView: UICollectionView!
override func viewDidLoad() {
super.viewDidLoad()
dashboardCollectionView.delegate = self
}
}
2.Implement UICollectionViewDelegateFlowLayout, а не UICollectionViewDelegate.
extension DashboardViewController: UICollectionViewDelegateFlowLayout {
fileprivate var sectionInsets: UIEdgeInsets {
return .zero
}
fileprivate var itemsPerRow: CGFloat {
return 2
}
fileprivate var interitemSpace: CGFloat {
return 5.0
}
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAt indexPath: IndexPath) -> CGSize {
let sectionPadding = sectionInsets.left * (itemsPerRow + 1)
let interitemPadding = max(0.0, itemsPerRow - 1) * interitemSpace
let availableWidth = collectionView.bounds.width - sectionPadding - interitemPadding
let widthPerItem = availableWidth / itemsPerRow
return CGSize(width: widthPerItem, height: widthPerItem)
}
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
insetForSectionAt section: Int) -> UIEdgeInsets {
return sectionInsets
}
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 0.0
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return interitemSpace
}
}
Ответ 10
Определите протокол UICollectionViewDelegateFlowLayout
в своем файле заголовка.
Внедрите следующий метод протокола UICollectionViewDelegateFlowLayout
следующим образом:
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
{
return UIEdgeInsetsMake(5, 5, 5, 5);
}
Щелкните здесь, чтобы увидеть документацию Apple по методу UIEdgeInsetMake
.
Ответ 11
Проголосовавший ответ (а также быстрая версия) имеет небольшую проблему: будет большой интервал справа.
Это связано с тем, что макет потока настроен так, чтобы сделать расстояние между ячейками точным, с поведением с поплавком.
Мое решение состоит в том, чтобы манипулировать вставкой раздела, чтобы раздел был центрирован, но интервал точно соответствует указанному.
В скриншоте ниже, расстояние между пунктами/линиями равно 8pt, а вставка слева и справа будет больше 8pt (чтобы сделать выравнивание по центру):
![равномерно распределенные ячейки]()
Код Swift как таковой:
private let minItemSpacing: CGFloat = 8
private let itemWidth: CGFloat = 100
private let headerHeight: CGFloat = 32
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
// Create our custom flow layout that evenly space out the items, and have them in the center
let layout = UICollectionViewFlowLayout()
layout.itemSize = CGSize(width: itemWidth, height: itemWidth)
layout.minimumInteritemSpacing = minItemSpacing
layout.minimumLineSpacing = minItemSpacing
layout.headerReferenceSize = CGSize(width: 0, height: headerHeight)
// Find n, where n is the number of item that can fit into the collection view
var n: CGFloat = 1
let containerWidth = collectionView.bounds.width
while true {
let nextN = n + 1
let totalWidth = (nextN*itemWidth) + (nextN-1)*minItemSpacing
if totalWidth > containerWidth {
break
} else {
n = nextN
}
}
// Calculate the section inset for left and right.
// Setting this section inset will manipulate the items such that they will all be aligned horizontally center.
let inset = max(minItemSpacing, floor( (containerWidth - (n*itemWidth) - (n-1)*minItemSpacing) / 2 ) )
layout.sectionInset = UIEdgeInsets(top: minItemSpacing, left: inset, bottom: minItemSpacing, right: inset)
collectionView.collectionViewLayout = layout
}
Ответ 12
Простой код для пробелов
let layout = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
layout.minimumInteritemSpacing = 10 // Some float value
Ответ 13
Я использую monotouch, поэтому имена и код будут немного разными, но вы можете сделать это, убедившись, что ширина представления коллекции равна (ширина ячейки x *) + (x-1) * MinimumSpacing с x = количество ячеек в строке.
Просто выполните следующие шаги, основанные на вашей минимальной ширине и ширине ячейки
1) Мы вычисляем количество элементов в строке на основе размера ячейки + текущие вставки + минимальный интервал
float currentTotalWidth = CollectionView.Frame.Width - Layout.SectionInset.Left - Layout.SectionInset.Right (Layout = flowlayout)
int amountOfCellsPerRow = (currentTotalWidth + MinimumSpacing) / (cell width + MinimumSpacing)
2) Теперь у вас есть вся информация для расчета ожидаемой ширины для вида коллекции
float totalWidth =(amountOfCellsPerRow * cell width) + (amountOfCellsPerRow-1) * MinimumSpacing
3) Таким образом, разница между текущей шириной и ожидаемой шириной равна
float difference = currentTotalWidth - totalWidth;
4) Теперь отредактируйте вставки (в этом примере мы добавим его вправо, поэтому левая позиция коллекции будет оставаться той же
Layout.SectionInset.Right = Layout.SectionInset.Right + difference;
Ответ 14
Я наткнулся на аналогичную проблему, как OP. К сожалению, принятый ответ не сработал у меня, так как содержимое collectionView
не будет правильно центрировано. Поэтому я придумал другое решение, которое требует, чтобы все элементы в collectionView
имели ту же ширину, что, похоже, имеет место в вопросе:
#define cellSize 90
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {
float width = collectionView.frame.size.width;
float spacing = [self collectionView:collectionView layout:collectionViewLayout minimumInteritemSpacingForSectionAtIndex:section];
int numberOfCells = (width + spacing) / (cellSize + spacing);
int inset = (width + spacing - numberOfCells * (cellSize + spacing) ) / 2;
return UIEdgeInsetsMake(0, inset, 0, inset);
}
Этот код гарантирует, что значение, возвращаемое ...minimumInteritemSpacing...
, будет точным расстоянием между каждым collectionViewCell
и, кроме того, гарантирует, что все ячейки будут центрироваться в collectionView
Ответ 15
выше решение vojtech-vrbka является правильным, но оно вызывает предупреждение:
предупреждение: UICollectionViewFlowLayout имеет несоответствие кэшированных кадров для пути к индексу - кэшированное значение: это, вероятно, происходит потому, что макет подкласса макета потока изменяет атрибуты, возвращаемые UICollectionViewFlowLayout, не копируя их
Следующий код должен исправить:
class CustomViewFlowLayout : UICollectionViewFlowLayout {
let cellSpacing:CGFloat = 4
override func layoutAttributesForElementsInRect(rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
let original = super.layoutAttributesForElementsInRect(rect)
if let original = original {
let attributes = NSArray.init(array: original, copyItems: true) as! [UICollectionViewLayoutAttributes]
for (index, attribute) in attributes.enumerate() {
if index == 0 { continue }
let prevLayoutAttributes = attributes[index - 1]
let origin = CGRectGetMaxX(prevLayoutAttributes.frame)
if(origin + cellSpacing + attribute.frame.size.width < self.collectionViewContentSize().width) {
attribute.frame.origin.x = origin + cellSpacing
}
}
return attributes
}
return nil
}
}
Ответ 16
версия Swift 3
Просто создайте подкласс UICollectionViewFlowLayout и вставьте этот метод.
override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
guard let answer = super.layoutAttributesForElements(in: rect) else { return nil }
for i in 1..<answer.count {
let currentAttributes = answer[i]
let previousAttributes = answer[i - 1]
let maximumSpacing: CGFloat = 8
let origin = previousAttributes.frame.maxX
if (origin + maximumSpacing + currentAttributes.frame.size.width < self.collectionViewContentSize.width && currentAttributes.frame.origin.x > previousAttributes.frame.origin.x) {
var frame = currentAttributes.frame
frame.origin.x = origin + maximumSpacing
currentAttributes.frame = frame
}
}
return answer
}
Ответ 17
Если вы хотите настроить интервал, не касаясь фактического размера ячейки, это решение, которое наилучшим образом подходит для меня. #xcode 9 # tvOS11 # iOS11 #swift
Итак, в UICollectionViewDelegateFlowLayout, измените реализацию следующих методов, трюк у вас должен использовать оба из них, и документация на самом деле не указывала мне думать в этом направлении.: D
open func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return cellSpacing
}
public func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return cellSpacing
}
Ответ 18
Я попробовал iago849 ответить, и это сработало.
Swift 4
open override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
guard let answer = super.layoutAttributesForElements(in: rect) else {
return nil
}
let count = answer.count
for i in 1..<count {
let currentLayoutAttributes = answer[i]
let prevLayoutAttributes = answer[i-1]
let origin = prevLayoutAttributes.frame.maxX
if (origin + CGFloat(spacing) + currentLayoutAttributes.frame.size.width) < self.collectionViewContentSize.width && currentLayoutAttributes.frame.origin.x > prevLayoutAttributes.frame.origin.x {
var frame = currentLayoutAttributes.frame
frame.origin.x = origin + CGFloat(spacing)
currentLayoutAttributes.frame = frame
}
}
return answer
}
Вот ссылка на проект GitHub. https://github.com/vishalwaka/MultiTags
Ответ 19
У меня есть горизонтальный UICollectionView
и подклассом UICollectionViewFlowLayout
. Вид коллекции имеет большие ячейки и отображает только один ряд из них за раз, а представление коллекции соответствует ширине экрана.
Я попробовал ответить iago849, и это сработало, но потом я узнал, что мне даже не нужен его ответ. По какой-то причине установка minimumInterItemSpacing
ничего не делает. Расстояние между моими элементами/ячейками можно полностью контролировать с помощью minimumLineSpacing
.
Не уверен, почему он работает таким образом, но он работает.
Ответ 20
Предыдущие версии действительно не работали с разделами > 1. Итак, мое решение было найдено здесь https://codentrick.com/create-a-tag-flow-layout-with-uicollectionview/. Для ленивых:
override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
let attributesForElementsInRect = super.layoutAttributesForElements(in: rect)
var newAttributesForElementsInRect = [UICollectionViewLayoutAttributes]()
// use a value to keep track of left margin
var leftMargin: CGFloat = 0.0;
for attributes in attributesForElementsInRect! {
let refAttributes = attributes
// assign value if next row
if (refAttributes.frame.origin.x == self.sectionInset.left) {
leftMargin = self.sectionInset.left
} else {
// set x position of attributes to current margin
var newLeftAlignedFrame = refAttributes.frame
newLeftAlignedFrame.origin.x = leftMargin
refAttributes.frame = newLeftAlignedFrame
}
// calculate new value for current margin
leftMargin += refAttributes.frame.size.width + 10
newAttributesForElementsInRect.append(refAttributes)
}
return newAttributesForElementsInRect
}
Ответ 21
У меня проблема с принятым ответом, поэтому я обновил его, это работает для меня:
.h
@interface MaxSpacingCollectionViewFlowLayout : UICollectionViewFlowLayout
@property (nonatomic,assign) CGFloat maxCellSpacing;
@end
ого
@implementation MaxSpacingCollectionViewFlowLayout
- (NSArray *) layoutAttributesForElementsInRect:(CGRect)rect {
NSArray *attributes = [super layoutAttributesForElementsInRect:rect];
if (attributes.count <= 0) return attributes;
CGFloat firstCellOriginX = ((UICollectionViewLayoutAttributes *)attributes[0]).frame.origin.x;
for(int i = 1; i < attributes.count; i++) {
UICollectionViewLayoutAttributes *currentLayoutAttributes = attributes[i];
if (currentLayoutAttributes.frame.origin.x == firstCellOriginX) { // The first cell of a new row
continue;
}
UICollectionViewLayoutAttributes *prevLayoutAttributes = attributes[i - 1];
CGFloat prevOriginMaxX = CGRectGetMaxX(prevLayoutAttributes.frame);
if ((currentLayoutAttributes.frame.origin.x - prevOriginMaxX) > self.maxCellSpacing) {
CGRect frame = currentLayoutAttributes.frame;
frame.origin.x = prevOriginMaxX + self.maxCellSpacing;
currentLayoutAttributes.frame = frame;
}
}
return attributes;
}
@end
Ответ 22
Мое решение в Swift 3
расстоянии между ячейками, как в Instagram:
![введите описание изображения здесь]()
lazy var collectionView: UICollectionView = {
let layout = UICollectionViewFlowLayout()
let cv = UICollectionView(frame: .zero, collectionViewLayout: layout)
cv.backgroundColor = UIColor.rgb(red: 227, green: 227, blue: 227)
cv.showsVerticalScrollIndicator = false
layout.scrollDirection = .vertical
layout.minimumLineSpacing = 1
layout.minimumInteritemSpacing = 1
return cv
}()
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
switch UIDevice.current.modelName {
case "iPhone 4":
return CGSize(width: 106, height: 106)
case "iPhone 5":
return CGSize(width: 106, height: 106)
case "iPhone 6,7":
return CGSize(width: 124, height: 124)
case "iPhone Plus":
return CGSize(width: 137, height: 137)
default:
return CGSize(width: frame.width / 3, height: frame.width / 3)
}
}
Как определить программное обеспечение устройства:
fooobar.com/questions/14935/...
Ответ 23
Подход раскадровки
Выберите CollectionView в вашей раскадровке и перейдите к инспектору размера и установите минимальный интервал для ячеек и линий равным 5
![]()
Swift 5 программно
lazy var collectionView: UICollectionView = {
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
//Provide Width and Height According to your need
let width = UIScreen.main.bounds.width / 4
let height = UIScreen.main.bounds.height / 10
layout.itemSize = CGSize(width: width, height: height)
//For Adjusting the cells spacing
layout.minimumInteritemSpacing = 5
layout.minimumLineSpacing = 5
return UICollectionView(frame: self.view.frame, collectionViewLayout: layout)
}()
Ответ 24
Попробуйте сыграть с этим методом:
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout*)collectionViewLayout
insetForSectionAtIndex:(NSInteger)section {
UIEdgeInsets insets = UIEdgeInsetsMake(?, ?, ?, ?);
return insets;
}