快速回答问题…
我正试图布局我的按钮,使它有整个屏幕宽度减去一些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/

10-12 14:00