2017-09-20 41 views
0

我是iOS和Swift的新手。我創建了一個集合視圖,它工作正常,但我想要在單個行中顯示多個項目。我試過,但沒有工作。有人能幫我嗎?提前致謝。Swift - UICollectionView連續顯示多個項目

這是我的代碼:

DashBoardCollectionVC

import UIKit 

class DashBoardCollectionVC: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate { 

    @IBOutlet weak var main_collection_view: UICollectionView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
     return 8 
    } 

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
     let cell = main_collection_view.dequeueReusableCell(withReuseIdentifier: "identify_collection_cell", for: indexPath) as! DashboardCollectionViewCell 
     return cell 
    } 

    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { 
     var collectionViewSize = collectionView.frame.size 
     collectionViewSize.width = collectionViewSize.width/2.0 //Display Three elements in a row. 
     collectionViewSize.height = collectionViewSize.height/4.0 
     return collectionViewSize 
    } 

    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
     print("Item Clicked : \(indexPath.item)") 

    } 

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    } 

} 

它看起來像這樣

enter image description here

ContainerView設計

enter image description here

我要顯示在連續的兩個項目。我怎樣才能做到這一點?

+1

看到這對e.g http://zappdesigntemplates.com/create-3-column-grid-view-with-uicollectionview/ –

+0

您應該自定義UICollectionViewLayout – Lumialxk

回答

0
Use this two methods it might work for you 
======================================= 

    func columnWidth(for collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout) -> CGFloat 
    { 
       return self.clView.frame.size.width/2 
    } 

func maximumNumberOfColumns(for collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout) -> Int { 
       let numColumns: Int = Int(2.0) 
       return numColumns 
     } 
1

在計算單元寬度時考慮邊距寬度。您需要減去邊距寬度,即兩個單元格之間的空格以及從您的
collectionViewSize.width = collectionViewSize.width/2.0結果中的單元格的開頭和結尾空格。 高度相同。

1

前段時間我有一個非常類似的問題,它在collectionViewLayout方法。我的細胞完全是方形的,所以這可能對你沒有幫助,或者你可以適應它。這是爲我工作:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 

     let width = collectionView.frame.width/3 - 1 
     return CGSize(width: width, height: width) 
    } 

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat { 
     return 1.0 
    } 

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { 
     return 1.0 
    } 

或者,如果我們在一排要2的代碼如下:

let width = collectionView.frame.width/2 - 1 

enter image description here enter image description here

此外,在故事板通常當你拖動來自對象庫的「集合視圖」,單元格出現在左下角,類似於下一個圖像 - 也許這不是相關的,並且可以以編程方式設置所有內容,但以防萬一與aut創建一些衝突olayout。

collection view storyboard