如何在 SwiftUI 中获取 widget 的圆角半径大小?

How to get the size of the corner radius of widget in SwiftUI?

我想在我的自定义视图周围保持相同的插图。需要外角半径来改变我们自定义视图的角半径,

我找不到任何环境变量或任何其他方法来获取小部件本身的角半径。

    var body: some View {
            VStack {
                HStack {
                    VStack {
                        Text("Hello")
                            .font(.title)
                        Text("Widget")
                    }
                    .padding()
                    .background(Color.yellow)
                    .cornerRadius(10)//<=here
                    Spacer()
                }
                Spacer()
            }
            .padding(5.0)
        }

iOS 14 中,我们有更好的方法使用 ContainerRelativeShape

ContainerRelativeShape 是一种新的形状类型,它将采用父级指定的最近容器形状的路径,并根据 position 的合适的角半径形状。

在这种情况下,系统正在为我们的小部件定义容器形状,我们非常容易获得与其同心的角半径。

.background(ContainerRelativeShape().fill(Color.yellow))
    var body: some View {
        VStack {
            HStack {
                VStack {
                    Text("Hello")
                        .font(.title)
                    Text("Widget")
                }
                .padding()
                .background(ContainerRelativeShape().fill(Color.yellow)) //<=here
                Spacer()
            }
            Spacer()
        }
        .padding(5.0)
    }