如何根据设备屏幕大小调整集合视图单元格的大小?

时间:2016-12-05 13:07:00

标签: ios uicollectionview ios10

我注意到细胞总是遵循尺寸检查器中的定义。即使我已经应用了UICollectionViewDelegateFlowLayout。

enter image description here

enter image description here

这就是它的外观。但我希望细胞看起来更像是在较小的iPhone屏幕上。

enter image description here

6 个答案:

答案 0 :(得分:34)

- (CGSize)collectionView:(UICollectionView *)collectionView 
              layout:(UICollectionViewLayout *)collectionViewLayout 
   sizeForItemAtIndexPath:(NSIndexPath *)indexPath {

   CGFloat height = self.view.frame.size.height;
   CGFloat width  = self.view.frame.size.width;
   // in case you you want the cell to be 40% of your controllers view
   return CGSizeMake(width * 0.4, height * 0.4);
 }

答案 1 :(得分:10)

Swift 4

您可以这样做:

class yourClassName: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {


    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
            return CGSize(width: self.myCollectionView.frame.height / 6 * 5, height: self.myCollectionView.frame.height / 6 * 5)

        }


}

self.myCollectionView是您收藏视图中的参考项目
实施UICollectionViewDelegateFlowLayout

非常重要

因为它不适合另一个单元格,所以只有一行。

答案 2 :(得分:1)

在Swift 4中

您可以从UICollectionViewDelegateFlowLayout扩展视图控制器并实现此方法:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        let height = collectionView.frame.height
        let width  = collectionView.frame.width
        return CGSize(width: width, height: height)
    }

在此示例中,我使像元的宽度等于CollectionView的宽度,您可以根据需要进行调整。

答案 3 :(得分:0)

有些人可能也需要这样做:在情节提要中,转到“收藏夹”视图内的collectionviewFlowLayout(看起来很立方体),然后转到“大小”检查器,确保将“估计大小”设置为“无”。 “。

答案 4 :(得分:-1)

 000-client-id-enforcement.xml
 111-json-thread-protection.xml
 222-custom-policy.xml

答案 5 :(得分:-1)

要添加到σασίληςΔ的答案中,请确保在您的“收藏夹视图大小”检查器中将估计大小设置为“无”。 image of Estimate Size in size inspector