【问题标题】:UICollectionView Rendering IssueUICollectionView 渲染问题
【发布时间】:2015-12-08 23:55:24
【问题描述】:

所以我对 UICollectionView 有一些问题,这似乎是互联网上的一个常见主题。 HereHereHere。我已经尝试了链接建议。所以只是一些背景。

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;
}

我很乐意处理渲染问题,因为除此之外它还可以工作。然而,我的强迫症正在发作,它正在努力解决问题所在。我什至已经部署到设备上,看看它是否是模拟器问题。我尝试过但似乎没有用的其他人建议的每个帖子。

关于如何解决这个问题的任何想法?我是 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

自定义单元

【问题讨论】:

  • 如果是在您滚动之后,可能是您重新整理单元格时出现的问题。在您的自定义单元格中,您是否调用了所有正确的方法及其[超级方法]?小区标识符是否正确?
  • 您并没有告诉我们您的集合视图和自定义单元格是来自故事板,还是以编程方式创建(或两者兼而有之)。您也没有告诉我们您的自定义单元格的结构,即浅灰色背景的构成是什么?布局中itemSize/estimatedItemSize是什么,单元格的实际大小是多少?
  • 公平的 cmets,我正在使用情节提要,带有 UICollectionViewController 的嵌入式视图。我已经尝试过嵌入和扩展 CollectionView 的 UIViewController 中的两个结果都是相同的。自定义单元类只是每个标签的空对象。我会更新问题来说明。
  • 您的收藏视图单元格大小设置为 58 像素高。您的单元格设置为 52 像素高。注意:回复评论时,请引用您正在回复的用户(@+用户名,您将获得自动完成),以便他/她得到通知。
  • @jcaron 感谢关于自动完成的建议。是的 58, 52 像素高。我可以调整以使它们相同,但我认为布局功能将其强制为 1.0 像素。不过我还是会试一试的。

标签: ios uitableview parse-platform uicollectionview uicollectionviewcell


【解决方案1】:

流布局中给定的项目大小(在 Interface Builder 中的集合视图上配置)不匹配,高度为 58 像素,自定义单元格的高度仅为52 像素。

这解释了单元格周围的额外间距。

【讨论】:

  • 完美。显然我的菜鸟经验。我不喜欢 Apple Storyboard,我在上面花了很多时间。谢谢老兄。
猜你喜欢
  • 1970-01-01
  • 2016-04-01
  • 2010-10-19
  • 2016-06-27
  • 2010-11-29
  • 2011-11-24
  • 2016-04-21
  • 2016-07-06
  • 2011-06-05
相关资源
最近更新 更多