Помощь в понимании иерархии представлений SwiftUI и .zIndex.IOS

Программируем под IOS
Ответить
Anonymous
 Помощь в понимании иерархии представлений SwiftUI и .zIndex.

Сообщение Anonymous »

Я пытаюсь изучить SwiftUI и неплохо справляюсь, но столкнулся с проблемой с размещением .zIndex/представления, с которой учебные пособия и ответы ИИ, похоже, мне не могут помочь. Я пишу приложение, в котором есть различные вкладки, и в этих представлениях с вкладками есть несколько меньших представлений. Я сделал образец, который значительно упрощен, но в нем сохранена вся моя основная структура. Это основная вкладка:
Изображение

Я хотел бы иметь возможность нажимать на цветные изображения и переводить их в полноэкранный режим поверх всего остального. Таким образом, нажатие кнопки «Ср» приведет к появлению полностью красного экрана, нажатие кнопки «Зеленый» приведет к появлению полностью зеленого экрана и так далее. Я добавил .zIndex там, где, по моему мнению, он должен быть, и он в некоторой степени работает, но не совсем так, как мне хотелось бы. ТАК, когда я нажимаю красный вид, он переходит в полноэкранный режим, но представления в нижнем ряду все еще остаются сверху.
[img]https:// i.sstatic.net/1vl6LK3L.png[/img]

Если я нажму зеленый, он также попытается перейти в полноэкранный режим, но начнется с существующей позиции X и снова не выйдет за пределы экрана. нижние строки.
Изображение

Я разместил свои представления с помощью пары циклов ForEach после определения лучших представлений в каждой строке для количества отображаемых представлений...

Код: Выделить всё

//ROWS
ForEach(rangeRows, id: \.self){ row in
HStack(spacing: 0){
ForEach(rangeSplit, id: \.self){ cust in

CustomView(group: group, tag: number)
.onTapGesture {
print("Make This View Full Screen")
group.views[number].isFullScreen.toggle()
selectedView = number
}
.zIndex(selectedView == number ? 1 : 0)

}
}
}
И внутри пользовательского представления у меня есть следующее, чтобы заставить представление расширяться, но я не знаю, как определить его положение:

Код: Выделить всё

.frame(width: group.views[tag].isFullScreen ? UIScreen.main.bounds.width : size.width,
height: group.views[tag].isFullScreen ? UIScreen.main.bounds.height : size.height)

.edgesIgnoringSafeArea(group.views[tag].isFullScreen ? .all : .init())
Думаю, у меня есть 2 вопроса: как мне добиться, чтобы представления всегда присутствовали из x:0, y:0, а также как поднять их на самый верх стека представлений . Я знаю, что проблема с .zIndex, скорее всего, связана с тем, что нижняя строка находится в другом HStack, но я не знаю, как еще их динамически расположить. На каждой вкладке может быть от 2 до 24 представлений, и у меня уже есть логика для определения количества представлений на строку и количества строк. Мне просто нужно выяснить, как построить представление, чтобы оно работало правильно.
Я попытаюсь прикрепить пример проекта, чтобы продемонстрировать поведение, но я не мастер-программист, и это имеет были собраны путем просмотра различных обучающих программ и вопросов богам искусственного интеллекта. Окончательное приложение будет не просто цветными квадратами, там будет вид с наложениями, но я не хотел еще больше усложнять свой вопрос. Надеюсь, я объяснил это достаточно хорошо.
Пример проекта здесь, я не смог понять, как загрузить его в стек, поэтому добавил его в WeTransfer, ссылка действительна для 3 дня.
Пример проекта

Подробнее здесь: https://stackoverflow.com/questions/790 ... and-zindex
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»