swift - SwiftUI 文本不使用 .fixedSize() 缩小
问题描述
我正在开发一个应用程序,其中包含一段带有按钮的大文本,我希望在其下方占据与文本相同的宽度。我的解决方案是将 aVStack
与.fixedSize()
修饰符一起使用:
VStack {
Text(viewModel.timeString)
.animation(nil)
.minimumScaleFactor(0.1)
.lineLimit(1)
.font(.system(size: 100, design: .monospaced))
.padding(.vertical, -20)
TimerActionsCompact(viewModel: viewModel) // the 3 buttons
}
.fixedSize()
这产生了我想要的结果:
然而,当文本变得太大时,它只是离开屏幕而不是缩小,即使我已经minimumScaleFactor
设置lineLimit
了。
我发现问题是.fixedSize()
,删除它会导致文本正确缩小。
我做错了什么,还是这可能是 swiftUI 的错误?如果是这样,有什么解决方法吗?
谢谢!
解决方案
一种可以使用框架修饰符的可能方式,如下例所示:
struct ContentView: View {
@State private var string: String = "0.0"
var body: some View {
Text(string)
.font(.system(size: 100, design: .monospaced))
.minimumScaleFactor(0.1)
.lineLimit(1)
.frame(width: 200, height: 80) // give your custom size here as you like!
.background(Color.gray.cornerRadius(10.0))
.animation(nil, value: string)
Button("add") { string += String(describing: Int8.random(in: 0...9)) }.padding()
}
}
推荐阅读
- javascript - 如何隐藏复选框的“框”并只保留单词标签
- python - 如何在 Django 中使用 sympy 构建包含 python 表达式的文本区域的 LaTeX 实时预览?
- vue.js - 捆绑组件的 currentinstance 值为 null
- android - Firestore 黑客案例研究
- c - double 表示最多 16 位有效数字的值
- keras - 如何在 Keras 中处理样本和批次之间的共享数据
- javascript - Angular JS ng-click没有被触发,使用多个控制器
- c# - 降低 Swipeview 中的灵敏度
- r - 包“eRm”加载失败
- reactjs - 如何动态构建一次反应组件,但仍然让它们访问父状态?