2015-03-20 8 views
0

У меня есть UICollectionView, который содержит семь UICollectionViewCells, которые строятся с информацией, поступающей из файла plist. Когда я запускаю приложение, только четыре UICollectionViewCells видны, пока я не начну прокрутку вниз - это делает виолетту UICollectionViewCell видимой (см. Скриншот). Мой вопрос в том, как я могу отобразить четвертый (фиолетовый) UICollectionViewCell при запуске приложения.UICollectionViewCell становится видимым при прокрутке

В - (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath Я строю и создание клеток:

CategoryCollectionViewCell *cell = [cv dequeueReusableCellWithReuseIdentifier:catCellID forIndexPath:indexPath]; 

NSString *plist = [[NSBundle mainBundle] pathForResource:@"mainCategories" ofType:@"plist"]; 
NSArray *plistArray = [NSArray arrayWithContentsOfFile:plist]; 
NSDictionary *cat = [plistArray objectAtIndex:indexPath.item]; 

CGFloat red = [[cat objectForKey:@"color_red"] doubleValue]; 
CGFloat green = [[cat objectForKey:@"color_green"] doubleValue]; 
CGFloat blue = [[cat objectForKey:@"color_blue"] doubleValue]; 
CGFloat alpha = [[cat objectForKey:@"color_alpha"] doubleValue]; 

UIColor *color = [UIColor colorWithRed:(red/255.0) green:(green/255.0) blue:(blue/255.0) alpha:1]; 
[cell setBackgroundColor:color]; 
cell.label_CategoryName = [cat objectForKey:@"text"]; 
cell.image_CategoryIcon.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@.%@",[cat objectForKey:@"image"], kImageExt]]; 

return cell; 

enter image description here Спасибо!

+0

Не понимаю - вы хотите, чтобы фиолетовая ячейка была видимой вместе с синей, или вы хотите, чтобы начальная позиция прокрутки была такой, чтобы виолет-клетка была видна? –

+0

Как вы можете видеть на первом снимке, после желтой ячейки есть пробел - это пространство, в котором появляется клетка фиолетового, если я начну прокрутку. – nor0x

+0

Хм странно. Это не было видно из скриншота. Волшебно ли это появляется, когда вы кладете палец и начинаете прокрутку? –

ответ

1

Перемещение вложений содержимого в виде коллекции вниз с шагом по 1 точке за раз, пока оно не начнет вести себя так, как вы этого хотите.

[_collectionView setContentInset:UIEdgeInsetsMake(0, 10, 0, 0)]; 

CellForRowAtIndex обжигают много раз, и следующий код ...

NSString *plist = [[NSBundle mainBundle] pathForResource:@"mainCategories" ofType:@"plist"]; 
NSArray *plistArray = [NSArray arrayWithContentsOfFile:plist]; 
NSDictionary *cat = [plistArray objectAtIndex:indexPath.item]; 

строит весь новый экземпляр вашего массива в памяти, каждый раз. Это очень неэффективно. Принимая во внимание создание экземпляра массива один раз, возможно, лениво в свойстве или в viewDidLoad.

+0

Работаю отлично - спасибо! Построение массива было только для целей тестирования :-) – nor0x

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