带有材质和 ClipShape 的 SwiftUI 切换失去了切换背景

问题描述 投票:0回答:1

我在带有材质背景的“半圆形”视图内有一个切换视图。 为了实现“半圆”,我使用

.clipShape
.rect
以及选定的半径。
似乎将
.clipShape
.rect
(具有特定的
radius
参数)一起使用会导致
Toggle
失去背景颜色。
No background toggle image

代码:

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
1个回答
0
投票

这似乎是 SwiftUI 如何剪辑事物和 UIKit 如何渲染切换背景之间的一些奇怪的交互。如果您将所需的形状传递给

in:
background
参数,则切换的背景可见。

.background(.thinMaterial, in: .rect(
    topLeadingRadius: 20,
    bottomLeadingRadius: 0,
    bottomTrailingRadius: 0,
    topTrailingRadius: 20
))
© www.soinside.com 2019 - 2024. All rights reserved.