Я пытаюсь создать компонент, который получает имя и отображает его внутри фрейма. Я хочу, чтобы эта рамка имела наименьшую ширину, насколько это возможно, с учетом отступов и избежания разрыва строки. Ограничение ширины составляет 90: после этого строка текста должна быть разбита. Я пытался использовать атрибут maxWidth
модификатора frame
, но мой кадр получает фиксированное значение 90 в качестве ширины. Вот фрагмент кода компонента:
import SwiftUI
struct ContentView: View {
var name: String
var body: some View {
Text(name)
.font(.system(size: 12))
.background(Color.red)
.padding(.horizontal, 7)
.padding(.vertical, 5)
.background(Color.yellow)
.frame(minWidth: 0, maxWidth: 90)
.background(Color.green)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
Group {
ContentView(name: "This is a very long name")
.previewDisplayName("Long name")
ContentView(name: "Hi")
.previewDisplayName("Short name")
}
.previewLayout(.sizeThatFits)
}
}
Предварительный просмотр выглядит следующим образом:
Я также пытался использовать minWidth
и idealWidth
атрибуты, но результат всегда одинаков. Как я могу сделать, чтобы ширина принимала 90 как предел вместо фиксированного значения?