Так что у меня были некоторые проблемы с 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;
}
Это работает соответственно. ПОСЛЕ прокрутка (см ниже скриншотов)
Неправильного Рендер
корректного рендер
Сотового код
- (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
CollectionViewCell
CustomCell
Если это после прокрутки, возможно, это проблема при повторном использовании камеры. В вашей пользовательской ячейке вы называете правильные методы и свой [супер метод]? правильный идентификатор ячейки? – Lucho
Вы не говорите нам, если ваш просмотр коллекции и пользовательская ячейка поступают из раскадровки или создаются программно (или немного того и другого). Вы также не говорите нам о структуре вашей пользовательской ячейки, то есть о том, что формирует светло-серый фон? Что такое 'itemSize' /' valuItemSize' в макете и каков фактический размер ячейки? – jcaron
Справедливые комментарии, я использую раскадровку со встроенным представлением UICollectionViewController. Я пробовал как встроенные, так и внутри UIViewController, расширяющие CollectionView, оба результата одинаковы. пользовательский класс ячеек является просто пустым объектом каждого из меток. Я обновлю вопрос, чтобы проиллюстрировать. – Jeremy