2017-01-05 22 views
3

我想用Swift 3獲得我的collectionView的寬度的100%,但我很困惑。我正在嘗試的方法不起作用。到目前爲止,我有:Swift 3的CGSize集合視圖的100%寬度

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

任何想法?

回答

3

我認爲你正在試圖做到這一點:

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分×25分。感謝@Randy提醒!

+2

是的,重要的是指出'CGSize(width:100,height:25)'返回大小100點* 25點。它不需要百分比作爲參數,而是要點。 – Randy

+0

感謝那就是我所需要的。 – Sole

+0

@Sole不要忘記接受答案。 – shallowThought

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