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»