Я обновляю текст кнопки на основе значений в базе данных, и, поскольку эти значения могут быть очень длинными или очень короткими, я хочу, чтобы размер кнопки оставался постоянным, а размер текста изменялся динамически в зависимости от того, насколько велико значение, поэтому остается внутри кнопки и не усекается (значения будут предложения, это приложение для изучения языка). Я в основном хочу, чтобы размер шрифта был минимально возможным и максимально возможным значением.
Я знаю, как это сделать в Android Studio.
autoSizeMinTextSize=14sp
autoSizeMaxTestSize=20sp
Но когда я попытался использовать предложения, такие как большой размер шрифта с минимальным ScaleFactor, это не работает. Это просто делает текст невероятно маленьким.
Вот мой стиль кнопок.
struct SoundButton: ButtonStyle {
func makeBody(configuration: Self.Configuration) -> some View {
configuration.label
.foregroundColor(Color.black)
.multilineTextAlignment(.center)
.font(.custom("arial", size: 20))
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(configuration.isPressed ? LinearGradient(gradient: Gradient(colors: [Color("DarkestGreen"), Color("LightGreen")]), startPoint: .top, endPoint: .bottom):LinearGradient(gradient: Gradient(colors: [Color("DarkGreen"), Color("LightGreen")]), startPoint: .top, endPoint: .bottom))
.cornerRadius(10)
.shadow(radius: 3.0)
.overlay(
RoundedRectangle(cornerRadius: 10)
.stroke(Color.white, lineWidth:2))
.padding(2)
.scaleEffect(configuration.isPressed ? 0.975 : 1.0)
}
}
А вот код кнопки.
Button(action: {
playSound(sound: "\(self.category)_audio1", type: "mp3")
self.translation = self.btns[1][1]
}) {
if(gotValues==true) {
Text("\(self.btns[1][0])")
} else {
Text("\(self.btn1)")
}
}
Вот то, что мой экран выглядит как в приложении.
Что можно добавить к этому, чтобы добиться желаемого эффекта? Спасибо.
Также, вот рабочая android версия.