我在带有材质背景的“半圆形”视图内有一个切换视图。 为了实现“半圆”,我使用
.clipShape
和 .rect
以及选定的半径。.clipShape
与 .rect
(具有特定的 radius
参数)一起使用会导致 Toggle
失去背景颜色。代码:
ZStack {
Color.blue
Toggle("On", isOn: .constant(false))
.padding()
.frame(width: 150, height: 100)
.background(.thinMaterial)
.clipShape(
.rect(
topLeadingRadius: 20,
bottomLeadingRadius: 0,
bottomTrailingRadius: 0,
topTrailingRadius: 20
)
)
}
如果我将
.clipShape
与 RoundedRectangle(cornerRadius:)
一起使用,我会再次获得背景,但我需要底部不呈圆形。
这似乎是 SwiftUI 如何剪辑事物和 UIKit 如何渲染切换背景之间的一些奇怪的交互。如果您将所需的形状传递给
in:
的 background
参数,则切换的背景可见。
.background(.thinMaterial, in: .rect(
topLeadingRadius: 20,
bottomLeadingRadius: 0,
bottomTrailingRadius: 0,
topTrailingRadius: 20
))