我试图仅在Text()
视图的左侧和右侧添加填充。理想情况下,我想将其宽度设置为等于设备的宽度减去我定义的常数。
例如:
Text("My text view here")
.frame(width: device.width - 16)
在SwiftUI中执行此操作的正确方法是什么?我是用错误的方式来处理这个问题吗?
答案 0 :(得分:1)
GeometryReader
是为您提供有关父view
因此您可以像使用GeometryReader
:
var body: some View {
GeometryReader { geometry in
Text("My text view here")
.frame(width: geometry.size.width - 16)
.background(Color.red) // This is just to see how it looks like
}
}
您可以直接从设备上获取它:
var body: some View {
Text("My text view here")
.frame(width: UIScreen.main.bounds.width - 16)
.background(Color.red) // This is just to see how it looks like
}
请注意设备的宽度是物理宽度,并且不是在旋转时会更新。另外,我还没有尝试过用它来观察自己,但是我已经阅读了 UIScreen 在 SplitView 上遇到了问题。
答案 1 :(得分:0)
实现同一目标的另一种方法是.padding(.horizontal, 16)
答案 2 :(得分:0)
尝试将框架设置为屏幕的整个宽度(maxWidth:.infinity),然后添加水平填充。
Text("My text view here")
.frame(maxWidth: .infinity)
.padding(.horizontal, 16)