ios SwiftUI如何仅在被掩蔽的部分中启用掩蔽覆盖上的交互

flmtquvp  于 2023-04-13  发布在  iOS
关注(0)|答案(1)|浏览(98)

我在SwiftUI中添加了一个蒙版来创建一个聚光灯效果。但同时我希望用户可以通过我的窗口与视图进行交互,比如滑动滑块或点击按钮,同时完全阻止其他交互。
我面临的问题是,我不能通过这个遮罩窗口进行交互,因为它是一个覆盖层。有没有一种方法可以只在白色突出显示的区域启用交互?
看起来是这样的

这是我的代码,以实现叠加与突出显示窗口(聚光灯)

ZStack {
    VStack {
        Slider(
            value: $speed,
            in: 0...100,
            onEditingChanged: { editing in
                isEditing = editing
            }
        )
        Text("\(speed)")
            .foregroundColor(isEditing ? .red : .blue)
    }
    .padding(.top, 100)

    Rectangle()
        .fill(Color.black.opacity(0.5))
        .mask {
            Rectangle()
                .overlay(alignment: .topLeading) {
                    let rect = CGRect(x: 0, y: 500, width:390, height: 80)
                    RoundedRectangle(cornerRadius: 10, style: .continuous)
                        .frame(width: rect.width, height: rect.height)
                        .offset(y:90)
                        .blendMode(.destinationOut)
                }
        }
}
dxxyhpgq

dxxyhpgq1#

也许你可以使用.disabled和.zIndex的组合来代替掩码。
这只是第一个想法,但它应该工作。

相关问题