0

Так что у меня были некоторые проблемы с UICollectionView, который, кажется, является общей темой в Интернете. Here, Here и Here. Я пробовал предложения ссылок. Так что просто какой-то контекст.UICollectionView Rendering Issue

1.) Я тяну данные из Parse.com (не проблема существует)

2.) Результаты накинут и заселены в массиве, чтобы затем заполнить ячейку. (точно так же, как UITableView)

3.) Данные основаны только на тексте и заполняются соответственно, без изображений, с которыми нужно иметь дело в данный момент ;-).

Проблема, кажется, когда я визуализую набор данных. Я установил межстрочный интервал между каждой строкой следующим образом:

//reduce each section to 1px so that it looks like a record set. 
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section { 

    return 1.0; 
} 

//reduce each section to 1px so that it looks like a record set. 
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section { 

    return 1.0; 
} 
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *) collectionViewLayout insetForSectionAtIndex:(NSInteger)section{ 

    //UIEdgeInsetsMake(top, left, bottom, right); 
    return UIEdgeInsetsMake(0.0f, 0.0f, 0.0f, 0.0f); 
} 

-(BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds{ 
    return YES; 
} 

Это работает соответственно. ПОСЛЕ прокрутка (см ниже скриншотов)

Неправильного Рендер

WRONG RENDER

корректного рендер

CORRECT RENDER

Сотового код

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ 
     static NSString *identifier = @"cell"; 

     PatternCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath]; 
     PFObject *cellObject = [flightRecordData objectAtIndex:indexPath.row]; 

    /* ALL THE UILABEL ELEMENTS ARE SET HERE JUST REMOVED TO SAVE SPACE */ 


     cell.layer.shouldRasterize = YES; 
     cell.layer.rasterizationScale = [UIScreen mainScreen].scale; 

     [cell.layer setNeedsDisplay]; 
    return cell; 
} 

Я рад иметь дело с проблемой рендеринга, потому что кроме этого он работает. Тем не менее, мой OCD пинает, и он делает все возможное, чтобы решить, в чем проблема. Я даже развернулся к устройству, чтобы узнать, не проблема ли его симулятора, а это нет. Каждый из предложенных сообщений от других я пробовал, но, похоже, не работал.

Любые идеи о том, как исправить это? Я новичок в iOS, поэтому будьте нежны :-P.

ОБНОВЛЕНИЕ: Благодарим вас за отзыв, ниже приведены классные и скриншоты раскадровки. Я использую пользовательский класс, как объект, который я вызываю при необходимости.

Пользовательского UICollectionViewCell Класс

@interface PatternCollectionViewCell : UICollectionViewCell { 

    IBOutlet UILabel *pilotNameLabel; 
    IBOutlet UILabel *pilotTotalHoursLabel; 

    //etc etc... 
} 

@property (nonatomic,strong) IBOutlet UILabel *pilotNameLabel; 
@property (nonatomic,strong) IBOutlet UILabel *pilotTotalHoursLabel; 

Раскадровка

CollectionView

CollectionView

CollectionViewCell

CollectionViewCell

CustomCell

CustomCell

+0

Если это после прокрутки, возможно, это проблема при повторном использовании камеры. В вашей пользовательской ячейке вы называете правильные методы и свой [супер метод]? правильный идентификатор ячейки? – Lucho

+0

Вы не говорите нам, если ваш просмотр коллекции и пользовательская ячейка поступают из раскадровки или создаются программно (или немного того и другого). Вы также не говорите нам о структуре вашей пользовательской ячейки, то есть о том, что формирует светло-серый фон? Что такое 'itemSize' /' valuItemSize' в макете и каков фактический размер ячейки? – jcaron

+0

Справедливые комментарии, я использую раскадровку со встроенным представлением UICollectionViewController. Я пробовал как встроенные, так и внутри UIViewController, расширяющие CollectionView, оба результата одинаковы. пользовательский класс ячеек является просто пустым объектом каждого из меток. Я обновлю вопрос, чтобы проиллюстрировать. – Jeremy

ответ

1

Вы были несоответствие между размером элемента заданного в макете потока (настраивается на представления коллекции в Interface Builder), что дало высоту 58 пикселей в высоту и размер пользовательской ячейки, которая имела высоту всего 52 пикселя.

Это объясняет дополнительное расстояние вокруг ячейки.

+0

Отлично. Ясно, что мой нообский опыт. Мне не нравится Apple Storyboard, я трачу на это много часов. Спасибо друг. – Jeremy