【问题标题】:UICollectionViewCell sized relative to its collection-viewUICollectionViewCell 的大小相对于它的集合视图
【发布时间】:2016-05-25 15:55:19
【问题描述】:

我有一个(水平)集合视图,我通过自动布局约束更改它的大小。但是,当集合视图的大小发生变化时,单元格保持相同的静态大小。

为了演示,这里是视图调试器中的集合视图(我已经标记了集合视图和它的一个单元格):

如您所见,单元格保持原来的大小,现在实际上比其包含的集合视图高。

那么我怎样才能将单元格限制在它的集合视图中呢?

【问题讨论】:

  • 你总是想把它适应高度吗?
  • @OliverAtkinson 是的,单元格的高度和宽度应该等于集合视图的高度,因为它们必须是正方形。

标签: ios autolayout uicollectionview uistoryboard uicollectionviewcell


【解决方案1】:

我通过将项目的高度和宽度设置为集合视图的高度来解决这个问题。我在 sizeForItemAtIndexPath 中这样做:

-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    return CGSizeMake(collectionView.frame.size.height, collectionView.frame.size.height);
}

因为在我的情况下,单元格需要是完美的正方形,所以将单元格的高度和宽度设置为集合视图的高度非常有效。

并不是说您的类必须实现 UICollectionViewDelegateFlowLayout 协议才能公开此方法。

【讨论】:

    【解决方案2】:

    如果您想调整视图大小,您可以使用以下方法在旋转时重置项目大小,这将进入您的视图控制器子类。

    这应该是相当有效的,因为它只在可见视图控制器的大小发生变化时才被调用。

    - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator;
    {
      [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
    
      [coordinator animateAlongsideTransition:({
        ^(id<UIViewControllerTransitionCoordinatorContext> context) {
    
          UICollectionViewFlowLayout *layout = (id)self.collectionView.collectionViewLayout; {
    
            CGFloat height = CGRectGetHeight(self.collectionView.bounds);
    
            layout.itemSize = (CGSize) {
              .width  = height,
              .height = height
            };
    
          }
    
          [layout invalidateLayout];
    
        };
      }) completion:nil];
    
    }
    

    您还应该查看these answers 以获得更多解决方案。

    【讨论】:

    • 我通过将单元格的大小设置为 sizeForItemAtIndexPath 中的集合视图高度解决了这个问题。感谢您的帮助
    猜你喜欢
    • 2017-06-25
    • 1970-01-01
    • 2017-09-27
    • 2016-05-22
    • 1970-01-01
    • 2016-03-06
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多