【问题标题】:How to get Storyboard to support dynamically sized cells in UICollectionView?如何让 Storyboard 支持 UICollectionView 中动态大小的单元格?
【发布时间】:2014-11-24 16:53:40
【问题描述】:

我的动态大小的故事板中有以下布局:

但是,在运行应用程序时(取决于方向),单元格如下所示:

这是意料之中的,因为之前的单元格具有静态高度和宽度。

但是,我希望单元格根据设备宽度动态调整大小(为此,高度可以保持静态)。 CollectionView 本身会正确调整大小,因为它固定在其父视图上,因此如何使用自动布局约束覆盖单元格(与 UICollectionView 规定的静态单元格大小相比)。

【问题讨论】:

    标签: ios xcode storyboard uicollectionview uicollectionviewcell


    【解决方案1】:

    最简单的方法似乎是通过我的主视图控制器中的委托覆盖单元格大小:

    - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
        float cellWidth = (self.view.frame.size.width / 2) - 35;
        float cellHeight = cellWidth * 190.0f / 270.0f;
        return CGSizeMake(cellWidth, cellHeight);
    }
    

    我更希望在故事板中包含尽可能多的显示逻辑,但我认为这是 Apple 未来改进的空间。

    【讨论】:

      【解决方案2】:

      单元格大小不是由自动布局决定的,它们是由布局对象的 itemSize 属性设置的。如果您只有一种单元格类型,那么您在 IB 的集合视图中只需要一个单元格。加载集合视图时,您可以根据集合视图的宽度在代码中设置该大小。我就是这样弄的,

      -(void)viewWillLayoutSubviews {
          self.layout.itemSize = CGSizeMake(self.collectionView.bounds.size.width/2.5, 100);
      }
      

      【讨论】:

        猜你喜欢
        • 2014-07-08
        • 2021-12-13
        • 1970-01-01
        • 2014-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多