2014-02-25 3 views
3

Я использую ViewController, в котором я добавить UICollectionView таким образом:Клетки UICollectionView накладывается друг на друг

UICollectionViewFlowLayout *collectionViewFlowLayout = [[UICollectionViewFlowLayout alloc] init]; 
[collectionViewFlowLayout setScrollDirection:UICollectionViewScrollDirectionVertical]; 
[collectionViewFlowLayout setMinimumInteritemSpacing:2]; 
[collectionViewFlowLayout setMinimumLineSpacing:4]; 
[collectionViewFlowLayout setHeaderReferenceSize:CGSizeMake(320, 30)]; 

CGRect collectionViewFrame = self.view.bounds; 
self.collectionView = [[UICollectionView alloc] initWithFrame:collectionViewFrame collectionViewLayout:collectionViewFlowLayout]; 
self.collectionView.autoresizingMask = UIViewAutoresizingFlexibleHeight; 

self.collectionView.delegate = self; 
self.collectionView.dataSource = self; 

[self.collectionView registerClass:[MyCollectionViewCell class] forCellWithReuseIdentifier:myCellIdentifier]; 

[self.view addSubview:self.collectionView]; 

И это, как я инициализация моего пользовательского объекта ячейки (я удостоверился кадр для каждого клетки заполнили всю ширину экрана, так что клетки будут выводимые друг за другом по вертикали в UICollectionView):

CGSize mySize = CGSizeMake(320, 158); 
self.myTitle = [[UILabel alloc ] initWithFrame:CGRectMake(0, 0, mySize.width, mySize.height)]; 
[self.myTitle setTextColor:[UIColor whiteColor]]; 
[self.myTitle setBackgroundColor:[UIColor greenColor]]; 
[self.myTitle setTextAlignment:NSTextAlignmentLeft]; 
[self.myTitle setNumberOfLines:1]; 
[self.myTitle setText:@"My Title"]; 
[self addSubview:self.myTitle]; 

Это, как я инициализировать кадр ячейки в initWithNibName:

CGSize mySize = CGSizeMake(320, 158); 
self = [super initWithFrame:CGRectMake(0, 0, mySize.width, mySize.height)]; 

А вот мой cellForItemAtIndexPath код:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { 
UICollectionViewCell *cell = (UICollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:myCellIdentifier forIndexPath:indexPath]; 

    return cell; 
} 

Теперь у меня есть четыре из этих клеток, но они накладываются друг на друга. Что я делаю не так? Благодаря!

+0

Можете ли вы показать, как вы устанавливаете размер своих ячеек? Похоже, вы можете настроить ярлыки на более крупные рамки, чем ячейки, которые их содержат. –

+0

Пожалуйста, напишите свой 'cellForRowAtIndexPath', а также – JMarsh

+0

Да, я обновил свой вопрос! –

ответ

4

Реализовать UICollectionViewFlowLayout делегат вызова:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { 
return CGSizeMake(320, 158); 
} 

Или, так как все размеры постоянны просто указать размер в макете льются так:

UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc]init]; 
flowLayout.itemSize = CGSizeMake(320, 158); 
0

в numberOfSectionsInCollectionView: использования метода

[self.collectionView.collectionViewLayout invalidateLayout];

Надеюсь, это сработает!

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