Swiftui LazyVgrid против пользовательского просмотра для выбираемых тегов (ошибка эффекта глюка)IOS

Программируем под IOS
Ответить
Anonymous
 Swiftui LazyVgrid против пользовательского просмотра для выбираемых тегов (ошибка эффекта глюка)

Сообщение Anonymous »

У меня есть выбираемый вид тега в Swiftui, который выглядит как изображение слева. Это означает, что элементы выровнены по центру и не похожи на типичную сетку Swiftui (изображение справа) - Правильно "src =" https://i.sstatic.net/8slwdotk.png "/>
Это пользовательское представление, которое выглядит так:

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

struct FlowLayoutView: View where Data.Element: Hashable {
let data: Data
let spacing: CGFloat
let content: (Data.Element) -> Content

@State private var elementsSize: [Data.Element: CGSize] = [:]

var body: some View {
VStack(alignment: .center, spacing: spacing) {
let rows = computeRows()
ForEach(rows, id: \.self) { row in
HStack(spacing: spacing) {
ForEach(row, id: \.self) { item in
content(item)
.fixedSize()
.readSize { size in
elementsSize[item] = size
}
}
}
}
}
}

private func computeRows() -> [[Data.Element]] {
var rows: [[Data.Element]] = [[]]
var currentRowWidth: CGFloat = 0
let screenWidth = UIScreen.main.bounds.width - 40 // Adjust for padding

for item in data {
let itemSize = elementsSize[item, default: CGSize(width: 100, height: 1)]

if currentRowWidth + itemSize.width > screenWidth {
rows.append([item])
currentRowWidth = itemSize.width
} else {
rows[rows.count - 1].append(item)
currentRowWidth += itemSize.width + spacing
}
}

return rows
}
}
Таким образом, как можно увидеть, строки вычисляются, и это не было бы проблемой, если бы не тот факт, что, когда пользователь выбирает элемент, Computerows запускается функция, которая приводит к сбою или может назвать «эффект настройки» (сборный переосмысление по выбору). < /p>
Мне нужны эффективные обновления, как они находятся в Список Swiftui или Lazyvgrid, которые позволяют эффективно повторно-потоковое использование вместо того, чтобы вычислять строки вручную каждый раз, что приводит к «настройке». С другой стороны, с списком или сеткой у меня нет желаемого внешнего вида (изображение слева), и я имею обычный внешний вид (изображение справа), но, по крайней мере, у меня нет «твика» Эффект. < /p>
Можно ли каким -то образом иметь сетку или что -то еще, что не потребовало бы, чтобы я вычислил строки и в то же время иметь внешний вид, как изображение слева (все центрировано ;>

Подробнее здесь: https://stackoverflow.com/questions/794 ... effect-bug
Ответить

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

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

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

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

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