我在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)
}
}
}
1条答案
按热度按时间dxxyhpgq1#
也许你可以使用.disabled和.zIndex的组合来代替掩码。
这只是第一个想法,但它应该工作。