【问题标题】:UICollectionView cell size ContentView IssueUICollectionView 单元格大小 ContentView 问题
【发布时间】:2016-02-29 00:55:11
【问题描述】:

我在故事板单元格中有一个 UICollectionViewCell。前 6 个单元格大小为 45,最后一个单元格大小为 50。

故事板单元格大小的宽度 = 60。

在 iOS Simulator 4s 上运行时会出现以下问题。

如果您在位置 2、4、6 看到单元格,则 UICollectionView 的背景为红色。

我在子类的 layoutSubView 中得到以下内容。

Frame = {{0, 0}, {50, 60}}
Frame = {{0, 0}, {45, 60}}
Frame = {{0, 0}, {45, 60}}
Frame = {{0, 0}, {45, 60}}
Frame = {{0, 0}, {45, 60}}
Frame = {{0, 0}, {45, 60}}
Frame = {{0, 0}, {45, 60}}


- (void)layoutSubviews
{
    [super layoutSubviews];

    NSLog(@"Frame = %@",NSStringFromCGRect(self.bounds));
    self.contentView.frame = self.bounds;
}

另外,在 awakefromnib 中添加了调整大小,但不起作用。

-(void)awakeFromNib{
    [super awakeFromNib];

   self.contentView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin |UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth ;
}

上面打印的结果是正确的,尺寸是完美的。

在 ViewController 中添加以下内容也不起作用

-(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section{
    return 0.0;
}
-(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section{
    return 0.0;
}

一个演示项目在url.有一段时间可用

经过进一步调查,我发现是因为缩放模拟器。屏幕带有4s模拟器。我不知道在设备上它是否会导致任何问题。

100% => 结果正常 75% => 出现红色背景线 50% => 结果OK 33% => 结果还行 25% => 出现红色背景线

【问题讨论】:

  • 你能提供更多关于你的布局的信息吗?你的“celloctionViewCells”的大小不同吗?如果是这样,那么您可能需要为您的 collectionView 使用自定义布局而不是 flowLayout。

标签: ios uicollectionview uicollectionviewcell


【解决方案1】:

尝试像这样设置collectionView的约束

【讨论】:

  • 你解决过这个问题吗?
猜你喜欢
  • 2020-06-26
  • 2014-07-08
  • 2017-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多