由於這次的開發是使用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]
    }
}
現在secondCollectionView的cell也已經設定好了,就等明天來做最關鍵的設置,讓頁面可以同時顯示兩個UICollectionView。