Макет UICollectionView, такой как SnapChat?

как мы создаем UICollectionViewLayout, как рассказы SnapChat?

Любые идеи, пожалуйста?

введите описание изображения здесь

Я хотел бы иметь решение без внешней библиотеки.

    На основе прецедентного ответа, адаптированного к вашей проблеме:

    -(id)initWithSize:(CGSize)size { self = [super init]; if (self) { _unitSize = CGSizeMake(size.width/2,80); _cellLayouts = [[NSMutableDictionary alloc] init]; } return self; } -(void)prepareLayout { for (NSInteger aSection = 0; aSection < [[self collectionView] numberOfSections]; aSection++) { //Create Cells Frames for (NSInteger aRow = 0; aRow < [[self collectionView] numberOfItemsInSection:aSection]; aRow++) { NSIndexPath *indexPath = [NSIndexPath indexPathForItem:aRow inSection:aSection]; UICollectionViewLayoutAttributes *attributes = [UICollectionViewLayoutAttributes layoutAttributesForCellWithIndexPath:indexPath]; NSUInteger i = aRow%3; NSUInteger j = aRow/3; CGFloat offsetY = _unitSize.height*2*j; CGPoint xPoint; CGFloat height = 0; BOOL invert = NO; if (aRow%6 >= 3) //We need to invert Big cell and small cells => xPoint.x { invert = YES; } switch (i) { case 0: xPoint = CGPointMake((invert?_unitSize.width:0), offsetY); height = _unitSize.height; break; case 1: xPoint = CGPointMake((invert?_unitSize.width:0), offsetY+_unitSize.height); height = _unitSize.height; break; case 2: xPoint = CGPointMake((invert?0:_unitSize.width), offsetY); height = _unitSize.height*2; break; default: break; } CGRect frame = CGRectMake(xPoint.x, xPoint.y, _unitSize.width, height); [attributes setFrame:frame]; [_cellLayouts setObject:attributes forKey:indexPath]; } } } 

    Я установил высоту unitSize в 80, но при необходимости вы можете использовать размер экрана, например _unitSize = CGSizeMake(size.width/2,size.height/4.); ,

    Это делает: введите описание изображения здесь

    Боковое замечание: вам решать адаптировать логику или делать изменения, расчет фреймов ячеек не может быть «самым красивым куском кода».

    Interesting Posts

    Как исправить новую новую вкладку Google Chrome?

    Запуск Linux на старом ПК

    Пользовательский интерфейс IISExpress

    не удалось установить ширину столбца в ноль, т.е. не сделать столбец невидимым

    Программное обеспечение для записи DVD, совместимое с Windows 7

    Ошибка использования раздела, зарегистрированного как allowDefinition = ‘MachineToApplication’, превышающего уровень приложения

    Предоставить все в определенной схеме в db для групповой роли в PostgreSQL

    Определение пересечения двух сегментов линии?

    Объединение C ++ и C – как работает #ifdef __cplusplus?

    Как заблокировать ориентацию во время выполнения

    Можно ли использовать новое место для массивов в переносном режиме?

    Фиксированные заголовки DataTables смещены с колонками в широких таблицах

    Как переопределить Office 2013 до 2010 года?

    Разница в производительности между импортом дикой карты и требуемым импортом classа

    Плагин для автозаполнения JQuery в стиле Facebook

    Давайте будем гением компьютера.