[英]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.