2015-12-19 2 views
0

Я использую UICollectionView с автозапуском для отображения галереи. У меня есть 2 типа prototype cells - один для отображения для 2-столбцового набораView и один для трехколонного представления.UICollectionView auto layout с различными ячейками

На кнопку мыши, вид должен быть переключен на 2-колонный и 3-колонный

Ниже мой код:

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
    { 
     UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cellGrid" forIndexPath:indexPath]; 
     if([selected_layout isEqualToString:@"tile"]){ 
      cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cellTile" forIndexPath:indexPath]; // for 2 columns 
     } else { 
      cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cellGrid" forIndexPath:indexPath]; // for 3 columns 
     } 
[cell layoutIfNeeded]; 
    [cell setNeedsDisplay]; 

    return cell; 
} 

Я не установка ячейки высота/ширина в любом месте в коде, Я только что указал его в xib. Но каждый раз 3 столбца collectionView отображается примерно с 10-кратным черным промежутком между каждой ячейкой.

Я ссылался на this link, но использует быстрые и пользовательские классы ячеек. Я не хочу это использовать.

Как это решить? Где я ошибаюсь?

+0

если размер ячейки разнообразные средства, вам необходимо установить размер ячейки в Collectio зрения, - (CGSize) CollectionView: (UICollectionView *) CollectionView расположение: (UICollectionViewLayout *) collectionViewLayout referenceSizeForFooterInSection: (NSInteger) раздел { if ([selected_layout isEqualToString: @ "tile"]) return CGSizeMake (collectionView.frame.size.width/3,50); еще return CGSizeMake (collectionView.frame.size.width/2,50); } вот так – NANNAV

+0

@NANNAV пробовал это, все тот же. Зачем мне устанавливать размер нижнего колонтитула? 'referenceSizeForFooterInSection' – z22

+0

Вы каждый раз проверяли значение selected_layout? – sourav

ответ

0

Добавить эти методы делегата:

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionView *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section 
{ 


     return 5; 


} 


- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section 
{ 
    return UIEdgeInsetsMake(20, 10, 10, 10); 
} 
Смежные вопросы