SwiftUI усекает содержимое ForEach
В следующем фрагменте кода красные круги, очевидно, не помещаются на экране, и поэтому отображается только конечная часть HStack. Вместо этого я хочу, чтобы начальный текст HStack всегда был видимым, а замыкающие красные кружки, которые не помещаются в доступное пространство (заменены на ...), усекали. Как я могу это сделать?
struct ContentView: View {
var body: some View {
HStack {
Text("This text should always be visible")
.layoutPriority(1)
Spacer()
ForEach(0..<20) { index in
Image(systemName: "circle.fill")
.font(.body)
.foregroundColor(.red)
}
}
}
}
1 ответ
Решение
Все, кроме эллипсов, можно получить с помощью:
struct ContentView: View {
var body: some View {
HStack {
Text("This text should always be visible")
.fixedSize()
ForEach(0..<20) { index in
Image(systemName: "circle.fill")
.font(.body)
.foregroundColor(.red)
}
}
.frame(minWidth: 0, maxWidth: .infinity, alignment: .leading)
}
}
Чтобы получить эллипсы, вам, вероятно, придется рассчитать размеры кадра или попытаться поместить ваши изображения в атрибутивную строку, что может быть довольно сложным. Вы также можете рассмотреть возможность прокрутки или сетки.