快速回答问题…
我正试图布局我的按钮,使它有整个屏幕宽度减去一些16填充。我不想使用这个uiscreen.main.bounds.width。我希望它是动态的。
你们知道怎么做吗?
谢谢您!
代码示例
通过使用静态值,它可以工作
struct TestButton : View {
var body: some View {
Button(action: {
}) {
Text("Tap me")
}
.modifier(PrimaryButton())
}
}
fileprivate struct PrimaryButton: ViewModifier {
func body(content: Content) -> some View {
content
.frame(width: 300, height: 28)
.padding()
.background(Color.yellow)
.foregroundColor(Color.white)
}
}
使用dfd的注释,不会更改任何内容。
struct TestButton : View {
var body: some View {
Button(action: {
}) {
Text("Tap me")
}
.modifier(PrimaryButton())
}
}
fileprivate struct PrimaryButton: ViewModifier {
func body(content: Content) -> some View {
content
.relativeWidth(1.0)
.padding()
.background(Color.yellow)
.foregroundColor(Color.white)
}
}
最佳答案
GeometryReader可能会帮助您
例如:
SomeButton: View {
var body: some View {
GeometryReader { geometry in
VStack() {
Button(action:{}) {
Text("\(geometry.size.width)")
}.padding()
.frame(minWidth: geometry.frame(in: .global).size.width,
minHeight: geometry.frame(in: .global).size.height
)
.background(Color.red)
}
}
}
}
关于swift - SwiftUI:让按钮的左右两侧紧贴 parent 的左右两侧,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57009539/