2014-11-24 74 views
4

我在我的动态调整大小的故事板布局如下:如何获取Storyboard以支持UICollectionView中动态大小的单元格?

enter image description here

但是,运行应用程序(取决于方向)时,细胞如下所示:

enter image description here

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

但是,我想单元格根据设备宽度动态调整大小(高度可以保持静态为此目的)。 CollectionView本身调整大小是正确的,因为它固定在它的超级视图中,所以如何用自动布局约束(与从UICollectionView指定的静态单元大小相比)覆盖单元格。

回答

4

最简单的方法似乎是压倒一切的通过代表我的主视图控制器内的单元尺寸:

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

我宁愿有作为故事板中有很多显示逻辑,但我想这是苹果未来改进的空间。

1

单元格尺寸不是由自动布局确定的,它们是由布局对象的itemSize属性设置的。如果您只有一种细胞类型,那么您只需要IB中的收集视图中的一个细胞。加载收藏视图时,可以根据收藏视图的宽度以代码设置该尺寸。我已经做到了这样,

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