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)
  }
}

Чтобы получить эллипсы, вам, вероятно, придется рассчитать размеры кадра или попытаться поместить ваши изображения в атрибутивную строку, что может быть довольно сложным. Вы также можете рассмотреть возможность прокрутки или сетки.

Другие вопросы по тегам