Как создать однострочную этикетку, уменьшающую размер шрифта при вертикальном сжатии?
Естественный выбор сочетания minimumScaleFactor
с lineLimit
дает неожиданные результаты.
См. этот пример. Без ограничения строки этикетка сжимается по вертикали и правильно регулирует размер шрифта. Добавление .lineLimit(1)
предотвращает уменьшение размера шрифта верхней метки.
import SwiftUI
struct ContentView: View {
let text:String
var body: some View {
VStack(alignment:.center, spacing:0 ) {
Text(self.text)
.font(Font.system(size: 60.0))
.minimumScaleFactor(0.15)
.background(Color.blue)
Rectangle()
.strokeBorder()
.foregroundColor(Color.red)
.frame(maxWidth: .infinity)
.frame(height:60.0)
}
.frame(width: 100, height: 100)
.background(Color.green)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
VStack(spacing:20) {
ContentView(text:"A quick brown fox")
.lineLimit(1)
Text("Line limit 1")
ContentView(text:"150")
.lineLimit(1)
Text("Line limit 1")
ContentView(text:"A quick brown fox")
Text("No line limit")
ContentView(text:"150")
Text("No line limit")
}
}
}
введите описание изображения здесь