簡體   English   中英

Swift UI集合視圖布局

[英]Swift UI collection view layout

我正在嘗試在SpriteKit游戲中使用UIcollectionView來顯示級別選擇場景。 集合視圖有6個部分(開始,世界1-5),每個部分有8個單元(1-8級)。 它們是帶有簡單UILabel的自定義單元格。 我可以使用did select項目作為索引路徑來加載我的關卡,這一切都很好。 但是我的問題是以下

集合視圖的第一部分是“開始”屏幕,因此我不希望集合視圖顯示該部分中的8個單元格。 假定該部分僅顯示背景圖像和水龍頭以啟動標簽。 所以我在cellForIndexPath中嘗試的是

1)隱藏該部分中的單元格,但這會導致其他部分中的單元格出現文本標簽問題

2)隱藏文本標簽並使單元格顏色透明,與1相同的問題

那么基本上我該怎么做才能解決這個問題?

我可以將開始部分放到另一個SKScene中,但我更喜歡將其全部放在集合視圖中。 我在想的另一個選擇是使每個部分只有一個單元格(屏幕大小),並為每個部分(開始部分除外)添加8個UIButton。 我還需要禁用其中一些單元格/按鈕,直到解鎖上一個級別。 我不確定哪種更好的方法是8個單元格作為按鈕或8個UIButtons在1個單元格中。

我只是在尋找UICollectionView解決方案,我已經有了另一種選擇,因為當轉換為tvOS並使用焦點內容並使用30多個按鈕瀏覽6個部分時,它將使我的生活更加輕松

非常感謝您的幫助

我將使用8個單元格作為按鈕,而不是將1個單元格與一系列UIButton一起使用,這將使事情保持簡單,並允許您使用didSelectItemAtIndexPath。 您不能只使用numberOfItemsInSection在第一部分中僅定義一個單元格嗎?

我的方法可能是對背景圖像使用自定義流程布局和輔助視圖,然后點擊開始按鈕-有點復雜但非常靈活。

您可以在UICollectionView中注冊一種以上的單元格:

  • 如果您正在使用“界面”構建器,請從“對象”庫中添加另一個“收集視圖”單元並設置其重用標識符
  • 否則,使用self.collectionView?.registerNib(forCellWithReuseIdentifier:)self.collectionView?.registerClass(forCellWithReuseIdentifier:)在UICollectionViewController的viewDidLoad方法中注冊筆尖或類。

然后,當您使單元出隊時,請使用適當的重用標識符:

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    var reuseIdentifier = "identifier of cell with 8 button"
    if indexPath.section == 0 {
        reuseIdentifier = "identifier of start cell as you set in IB of viewDidLoad"
    }
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath)

    // Configure the cell depending on indexPath

    return cell
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM