Button SwiftUI:调整文本大小以适应按钮
我正在根据数据库中的值更新按钮文本,由于这些值可能很长或很短,我希望按钮大小保持不变,文本根据值的大小动态调整大小,因此它保留在按钮内,而不是被截断(值将是句子,这是一个语言学习应用程序)。我基本上想给字体大小一个最小可能值和一个最大可能值 我知道如何在Android Studio中做到这一点Button SwiftUI:调整文本大小以适应按钮,button,text,styles,swiftui,Button,Text,Styles,Swiftui,我正在根据数据库中的值更新按钮文本,由于这些值可能很长或很短,我希望按钮大小保持不变,文本根据值的大小动态调整大小,因此它保留在按钮内,而不是被截断(值将是句子,这是一个语言学习应用程序)。我基本上想给字体大小一个最小可能值和一个最大可能值 我知道如何在Android Studio中做到这一点 autoSizeMinTextSize=14sp autoSizeMaxTestSize=20sp 但当我尝试使用大字体和minimumScaleFactor这样的建议时,它不起作用。它只是让文本变得难
autoSizeMinTextSize=14sp
autoSizeMaxTestSize=20sp
但当我尝试使用大字体和minimumScaleFactor这样的建议时,它不起作用。它只是让文本变得难以置信的小
这是我的纽扣款式
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版本
据我所知,你的目标如下所示,应该会给你带来所需的效果(或某种效果) 使用Xcode 11.4/iOS 13.4进行测试
configuration.label
.padding(.horizontal,8).lineLimit(1).minimumScaleFactor(0.4)//但您无论如何都不限制按钮大小?.frame(maxWidth:.infinity,maxHeight:.infinity)
允许无限制地对其进行增长。那么?我有16个按钮。我希望他们在他们的父视图中平均划分屏幕。它们相互制约。我试过了,但线条很小,无法填满按钮。每个按钮上的字体大小也是相同的。我在我的原始帖子中添加了一个android版本的屏幕截图。如果你需要包装文本(这并不明显),只需删除建议答案中的.lineLimit
修饰符。如果我删除行限制并将scalefactor更改为0.8,它看起来更像android版本,但仍然不会改变按钮之间文本的大小。所有按钮的字体大小都相同。minimumScaleFactor似乎只是表示比例因子。如果我把字体大小改为16,看起来完全一样。但是在屏幕截图中,字体大小正在改变。也许我做错了什么。SwiftUI没有像autoSizeMinTextSize
这样的东西,至少现在是这样,如果可以预料的话。你可以向苹果提交反馈意见和建议。关于minimumScaleFactor
——这里是doc允许的缩小字体大小以适应可用空间的最小比例,因此它不是一种“常规比例”,它会改变字体大小。是的,它只是在不需要的时候缩小字体大小。但是你的允许字体大小不同。configuration.label中还有什么?