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

Yod*_*ama 4 macos ios widgetkit swiftui ipados

在此处输入图片说明 在此处输入图片说明

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

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

  • 仅将硬编码值解析为不适用于.cornerRadius()所有设备。由于不同的设备可能对其小部件使用不同的半径。
    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)
        }

Run Code Online (Sandbox Code Playgroud)

Yod*_*ama 7

iOS 14使用ContainerRelativeShape.

ContainerRelativeShape是一种新的形状类型,它将采用由父项指定的最近容器形状的路径,并根据形状的位置具有适当的角半径。

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

.background(ContainerRelativeShape().fill(Color.yellow))
Run Code Online (Sandbox Code Playgroud)
.background(ContainerRelativeShape().fill(Color.yellow))
Run Code Online (Sandbox Code Playgroud)