2016-11-26 111 views
1

我最近在一个应用程序中实现了一个集合视图,我遇到的唯一问题是集合视图从两列到两列有较多填充的较小设备上的一列Swift 3 CollectionView缩放

继承人显示较小的那么iPhone 6: enter image description here

和继承人它的外观显示大于或等于iPhone 6: enter image description here

我曾尝试几种方法,其中如果显示宽度小于某个数字就会变得很糟糕d放大细胞,但它没能解决问题,因为那些细胞确实已经放大了,但没有居中并重叠在一起。

回答

2

您需要width.Try此代码来计算的单元格。当我尝试动态改变大小

class YourClass: UIViewController { 
     //MARK:-Outlets 
     @IBOutlet weak var yourCollectionView: UICollectionView! 

     //Mark:-Variables 
     var cellWidth:CGFloat = 0 
     var cellHeight:CGFloat = 0 
     var spacing:CGFloat = 12 
     var numberOfColumn:CGFloat = 2 


     //MARK:-LifeCycle 
     override func viewDidLayoutSubviews() { 
      super.viewDidLayoutSubviews() 

      yourCollectionView.contentInset = UIEdgeInsets(top: spacing, left: spacing, bottom: spacing, right: spacing) 

      if let flowLayout = yourCollectionView.collectionViewLayout as? UICollectionViewFlowLayout{ 
       cellWidth = (yourCollectionView.frame.width - (numberOfColumn + 1)*spacing)/numberOfColumn 
       cellHeight = cellWidth //yourCellHeight = cellWidth if u want square cell 
       flowLayout.minimumLineSpacing = spacing 
       flowLayout.minimumInteritemSpacing = spacing 
      } 
     } 

    extension YourClass:UICollectionViewDelegateFlowLayout{ 
      func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 
       return CGSize(width: cellWidth, height: cellHeight) 
      } 
    } 
+0

你能解释一行中的集合视图并更改单元格的高度吗?请? –

2

您需要根据手机尺寸计算您的尺寸 - 如果两个单元格的宽度大于屏幕尺寸(包括它们之间的所有偏移量),它们将按照第一张图片进行布局。

您有两种选择: 一种是根据设备尺寸处理尺寸和重新缩放细胞 两个保持原样 - 对iphone6/6s/7进行细微更改。

如果您选择第一个选项,则需要为这些尺寸设置约束 - 纵横比或水平居中(可能会裁切图像)。

对于动态变化的大小,来看看: https://developer.apple.com/reference/uikit/uicollectionviewdelegateflowlayout

更具体: https://developer.apple.com/reference/uikit/uicollectionviewdelegateflowlayout/1617708-collectionview

+0

没有什么变化:/ –

+0

您有加入细胞之间从两侧偏移和距离?你可以很容易地检查,但设置宽度为20或类似 – Miknash

+0

@NickCatib请给他提供一些代码而不是链接。 –