SwiftUI:添加效果来控制会禁用交互性



如何将hueRotationblur或其他效果应用于 SwiftUI 中的控件,并仍允许用户与之交互?

import SwiftUI
struct SwiftUIView: View {
@State var isOn = true
var body: some View {
Toggle(isOn: $isOn) {
Text("The toggle is (isOn ? "on" : "off")")
}
.padding()
.hueRotation(.degrees(60)) // <-- Disables interactivity
}
}
struct SwiftUIView_Previews: PreviewProvider {
static var previews: some View {
SwiftUIView()
}
}

不幸的答案是,这似乎是UIKit支持Views中的一个错误(SwiftUI的Toggle实际上是在iOS上使用UISwitch(。 如果您修改代码以使用具有纯 SwiftUI 交互性的内容,则可以工作。

struct SwiftUIView: View {
@State var isOn = true
var body: some View {
HStack {
Button("Toggle") {
self.isOn.toggle()
}
Text("Is On: (self.isOn ? "yes" : "no")")
}
.padding()
.hueRotation(.degrees(60)) // <-- Interactivity still works
.contentShape(Rectangle())
}
}

您应该提交反馈。

显然,您想设置此Toggle样式。 这个问题有一些解决方案,尽管没有一个是很令人满意的。

最新更新