iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 20
0
Mobile Development

想知道自己iOS具現化系能力有多強嗎?實作幾個App就知道了系列 第 20

Day20-在同一個頁面顯示不同UICollectionView之新增第二個UICollectionView

  • 分享至 

  • xImage
  •  

由於這次的開發是使用Programmatic UI(使用代碼打造畫面),所以在元件的複用上非常方便,只要將代碼複製貼上並且稍作修改就好,這就是Programmatic UI的好處,與StoryBoard相比,StoryBoard在設定上更為直覺,有著非常方便的屬性檢閱器可以使用,並且會立即渲染,對於新手非常友善,但是有一些動態設定,就需要用到代碼來編輯元件,我覺得各有好壞,像是StoryBoard在元件複用上就比較差。

每個工程師都有自己偏好的技巧以及工具,端看工程師如何選擇,能夠把專案完成得漂亮就好。


與上一篇的模式一樣,首先一樣先宣告一個UICollectionView

var secondCollectionView: UICollectionView!

宣告完了之後,使用一個func來包裝這些設定,然後針對secondCollectionView進行設置。

func setupSecondCollectionView()
    {
        let viewFrame = UIScreen.main.bounds
        let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
        self.secondCollectionView = UICollectionView(frame: CGRect(
            x: 0,
            y: (viewFrame.height * 0.55),
            width: viewFrame.width ,
            height: (viewFrame.height * 0.4)),
                                                     collectionViewLayout: layout)
        layout.itemSize = CGSize(width: viewFrame.width * 0.75,
                                 height: secondCollectionView.frame.height * 0.9)

        layout.minimumLineSpacing = CGFloat(integerLiteral: Int(viewFrame.width * 0.05))
        layout.minimumInteritemSpacing = CGFloat(integerLiteral: 100)
        layout.sectionInset = UIEdgeInsets(top: 20, left: 10, bottom: 20, right: 10)
        
        layout.scrollDirection = UICollectionView.ScrollDirection.horizontal
        self.secondCollectionView.dataSource = self
        self.secondCollectionView.delegate = self
        self.secondCollectionView.register(CardCell.self, forCellWithReuseIdentifier: CollectionViewCellIdentifier.secondCell.identifier)
        self.secondCollectionView.backgroundColor = UIColor(red: 0.2196078449, green: 0.007843137719, blue: 0.8549019694, alpha: 1)
        self.view.addSubview(secondCollectionView)
    }

設置完之後,需要找個地方呼叫這個方法,這樣才能夠完成對於UICollectionView的設定,我一樣在viewDidLoad呼叫,所以現在的viewDidLoad應該有兩個設定UICollectionView的方法,並且生命週期內部應該長這樣子:

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

另外再在CardCell類別內設定Cell的配置,現在到CardCell.swift內,定義一個方法:

func setupSecond(data: [String], indexPath: IndexPath)
   {
    self.backgroundColor = UIColor(red: 0.5843137503, green: 0.8235294223, blue: 0.4196078479, alpha: 1)
    titleLabel.text = data[indexPath.row]
    }
}

現在secondCollectionViewcell也已經設定好了,就等明天來做最關鍵的設置,讓頁面可以同時顯示兩個UICollectionView


上一篇
Day19-在同一個頁面顯示不同UICollectionView之先弄個UICollectionView出來(View、Controller分離,Refactor to Method)
下一篇
Day21-在同一個頁面顯示不同UICollectionView之同時顯示兩個CollectionView
系列文
想知道自己iOS具現化系能力有多強嗎?實作幾個App就知道了30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言