Я пытаюсь использовать UIcollectionView в моей игре SpriteKit, чтобы отобразить сцену выбора уровня. Представление коллекции имеет 6 разделов (начало, мир 1-5) с 8 ячейками в каждом (уровень 1-8). На данный момент это пользовательские ячейки с простой UILabel. Я могу использовать элемент select для указательного пути для загрузки моих уровней, все в порядке. Однако моя проблема заключается в следующем:Swift UI collection view layout
Первый раздел в представлении коллекции - это начальный экран, поэтому я не хочу, чтобы представление коллекции отображало 8 ячеек в этом разделе. Предполагается, что в этом разделе отображается только фоновое изображение и кратковременное нажатие. Так что я пытался в cellForIndexPath является
1) скрыть ячейки в этом разделе, но это приводит к проблемам текста меток с клетками в других разделах
2) скрыть текстовые метки и сделать цвет ячейки прозрачным, так же проблема как 1
Итак, в основном, что я мог сделать, чтобы решить эту проблему?
Я могу разместить начальную часть в другой SKScene, но я предпочитаю, если все это в виде коллекции. Другой вариант, о котором я думал, состоит в том, чтобы каждый раздел имел только 1 ячейку, размер экрана и добавлял 8 UIButtons для каждого раздела, кроме начального раздела. Мне также нужно, чтобы некоторые из этих ячеек/кнопок были отключены до тех пор, пока предыдущий уровень не будет разблокирован. Я не уверен, что лучший подход, 8 ячеек в качестве кнопок или 8 UIButtons в 1 ячейке.
Я только ищу решение UICollectionView, у меня уже есть альтернатива, потому что это сделает мою жизнь намного проще при преобразовании в tvOS и с помощью фокусировочного материала и навигации по 6 секций с более чем 30 кнопок
Спасибо вы очень много для любой помощи
Большое вам спасибо, это именно то, что я искал. Новое для UiKit, так что все это совершенно ново для меня. Я на самом деле пытался это сделать в какой-то момент, но моей проблемой была строка let cell = .... Я писал это так: «let cell = collectionView.dequeueReusableCellWithReuseIdentifier (reuseIdentifier, forIndexPath: indexPath) как!MyCustomCell ". MyCustomCell вызвал у меня проблемы при попытке использовать 2 ячейки. Не понял, что вам не нужна эта линия. Еще раз спасибо – crashoverride777
Если я действительно могу задать вам еще один вопрос. Использование вашего пути отлично работает. вернитесь к использованию 8 ячеек вместо 1 с помощью 8-клавишной ячейки, есть аналогичный трюк, как изменить размер ячейки в разделе 1 (0). Я использую flowLayout, поэтому я определяю размер элемента в представлении коллекции, а не в пользовательской ячейке – crashoverride777
'as! MyCustomCell' означает, что вы хотите * принудительно * придать ячейку классу MyCustomCell', когда у вас есть 2 разных ячейки, один из которых (возможно) имеет другой класс, поэтому он не сможет выполнить команду. вашей ячейки в Interface Builder –