【问题标题】:100% width of collectionView with CGSize in Swift 3在 Swift 3 中使用 CGSize 的 collectionView 的 100% 宽度
【发布时间】:2017-01-05 15:55:37
【问题描述】:

我正在尝试使用 Swift 3 获得 collectionView 的 100% 宽度,但我很困惑。我正在尝试的方法不起作用。到目前为止,我有:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    return CGSize(width: 100, height: 25)
}

有什么想法吗?

【问题讨论】:

    标签: ios uicollectionview swift3


    【解决方案1】:

    我认为你正在努力做到这一点:

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

    collectionView.frame.size.width 将获得collectionView 的宽度。

    注意:传入的参数是点,不是百分比。所以你返回的是 100 点 x 25 点。感谢@Randy 的提醒!

    【讨论】:

    【解决方案2】:

    我有一个我使用的自定义 UICollectionViewFlowLayout 子类。请注意,您可能需要考虑插图等。

    class AutoSizingCollectionViewFlowLayout: UICollectionViewFlowLayout {
    
      @IBInspectable var height: CGFloat = 0
      @IBInspectable var spacing: CGFloat = 0
    
      override func prepareLayout() {
        let containerBounds = (self.collectionView?.window != nil) ? self.collectionView?.bounds : UIScreen.mainScreen().bounds
    
        var size = self.itemSize
        size.width = CGRectGetWidth(containerBounds!)
        size.width -= (self.sectionInset.left + self.sectionInset.right)
        size.height = height
        self.itemSize = size
    
        self.minimumLineSpacing = spacing
    
        super.prepareLayout()
      }
    }
    

    【讨论】:

      【解决方案3】:

      Swift 4 中使用此代码:

      var collectionWidth = collectionView.frame.size.width
      if #available(iOS 11.0, *) {
          collectionWidth -= collectionView.safeAreaInsets.left + collectionView.safeAreaInsets.right
      }
      

      新 iPhone 轻推需要检查安全区域

      【讨论】:

        猜你喜欢
        • 2017-12-25
        • 2014-07-31
        • 1970-01-01
        • 2013-08-29
        • 2014-06-19
        • 1970-01-01
        • 2017-11-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多