我试图对NavigationStack
应用cornerRadius
,但结果是,touch 区域被限制在初始查看位置.简而言之,如果滑块处于关闭状态,则除非touch 图像中描绘的红色区域,否则无法通过轻触将其打开.(ControllerView
负责动画制作)
import SwiftUI
private struct ControllerView<Content: View>: View {
private var content: Content
@Binding var isOpen: Bool
init(isOpen: Binding<Bool>, @ViewBuilder content: () -> Content) {
self._isOpen = isOpen
self.content = content()
}
var body: some View {
GeometryReader { proxy in
ZStack {
Color.yellow.ignoresSafeArea()
content
.cornerRadius(30) /// <- Here
.offset(x: isOpen ? 300 : 0)
}
.ignoresSafeArea()
}
}
}
private struct GreenView: View {
@Binding var isOpen: Bool
@Binding var navigation : [AnyHashable]
var body: some View {
NavigationStack(path: $navigation) {
Color.green.ignoresSafeArea()
.onTapGesture {
print("GreenView tapped!")
withAnimation { isOpen.toggle() }
}
}
}
}
struct SwiftUIView9: View {
@State private var isOpen = true
var body: some View {
ControllerView(isOpen: $isOpen) {
GreenView(isOpen: $isOpen, navigation: .constant([]))
}
}
}
#Preview {
SwiftUIView9()
}