Я разрабатываю приложение iOS-iPadOS с SwiftUI. У меня есть коллекция изображений, которые я хочу отображать в разных размерах строки (все строки должны быть одинаковой длины), заполняя большую часть родительского представления (от края до края ячейки списка). Это очень просто сделать, если вы знаете, сколько столбцов или строк вам нужно. Вместо этого я хотел бы адаптировать код устройства-независимость. Классы размера (обычные и компактные) не подходят, поскольку разделенный экран iPad и iPhone компактны, но имеют много горизонтального пространства.
Я искал способ получения размера представления, хотя я не думаю, что этохороший подход. Я ничего не нашел.
Это базовый код, который я использовал при создании макета (все еще не приспособлен для приема строк или столбцов с номером таблицы):
VStack(alignment: .center){
HStack(alignment: .center){
Spacer()
ForEach(lista.prefix(5)) { periodo in
Group{
Image(systemName:"\(periodo.imagen).circle.fill")
.resizable()
.foregroundColor(color(periodo.color))
.frame(width: 55, height: 55)
.onTapGesture {
self.periodoActual = self.lista.firstIndex(of: periodo) ?? 0
}
Spacer()
}
}
}
HStack(alignment: .center, spacing: 10){
ForEach(lista.dropFirst(5)) { periodo in
Image(systemName:"\(periodo.imagen).circle.fill")
.resizable()
.foregroundColor(color(periodo.color))
.frame(width: 55, height: 55)
.onTapGesture {
self.periodoActual = self.lista.firstIndex(of: periodo) ?? 0
}
}
}
}.frame(minWidth: 0, idealWidth: .infinity, maxWidth: .infinity)
Где lista - массив (его длина10) содержит экземпляры пользовательской структуры, декодированные из файла JSON. periodoActual - это переменная состояния (@State).
Кто-нибудь получил идею для эффективного решения этой проблемы? Заранее спасибо.