如何在 SwiftUI 中获取 widget 的圆角半径大小?
How to get the size of the corner radius of widget in SwiftUI?
我想在我的自定义视图周围保持相同的插图。需要外角半径来改变我们自定义视图的角半径,
我找不到任何环境变量或任何其他方法来获取小部件本身的角半径。
- 仅将硬编码值解析为
.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)
}
在 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)
}
我想在我的自定义视图周围保持相同的插图。需要外角半径来改变我们自定义视图的角半径,
我找不到任何环境变量或任何其他方法来获取小部件本身的角半径。
- 仅将硬编码值解析为
.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)
}
在 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)
}