如何在swiftui中使用self.offset拖动侧菜单?
我的侧菜单有以下代码,但我无法设置self.offset(x:,y:),因为它表示结果未使用?我如何才能使这项工作,因为我希望菜单可以拖动到左侧如何在swiftui中使用self.offset拖动侧菜单?,swiftui,Swiftui,我的侧菜单有以下代码,但我无法设置self.offset(x:,y:),因为它表示结果未使用?我如何才能使这项工作,因为我希望菜单可以拖动到左侧 @Binding var showMenu: Bool var body: some View { HStack { GeometryReader { geometry in MenuView() .frame(width: 240, a
@Binding var showMenu: Bool
var body: some View {
HStack {
GeometryReader { geometry in
MenuView()
.frame(width: 240, alignment: .leading)
.background(Color.white)
.offset(x: self.showMenu ? 0 : -geometry.size.width)
.animation(.spring())
.transition(.move(edge: .leading))
.zIndex(4)
.gesture(DragGesture()
.onChanged { val in
self.offset(x: val.translation.width)
}
.onEnded { val in
self.offset(x: .zero)
}
)
}
}
}
因为代码是不可测试的,所以只需要想法-不好测试。您不能使用视图结构的
self
,而是更改一些状态,并在相应的修饰符中使用该状态值,如下所示
@Binding var showMenu: Bool
@State private var xOffset: CGFloat = .zero
var body: some View {
HStack {
GeometryReader { geometry in
MenuView()
.frame(width: 240, alignment: .leading)
.background(Color.white)
.offset(x: self.showMenu ? xOffset : -geometry.size.width)
.animation(.spring())
.transition(.move(edge: .leading))
.zIndex(4)
.gesture(DragGesture()
.onChanged { val in
self.xOffset = val.translation.width
}
.onEnded { val in
self.xOffset = .zero
}
)
}
}
}
因为代码是不可测试的,所以只需要想法-不好测试。您不能使用视图结构的
self
,而是更改一些状态,并在相应的修饰符中使用该状态值,如下所示
@Binding var showMenu: Bool
@State private var xOffset: CGFloat = .zero
var body: some View {
HStack {
GeometryReader { geometry in
MenuView()
.frame(width: 240, alignment: .leading)
.background(Color.white)
.offset(x: self.showMenu ? xOffset : -geometry.size.width)
.animation(.spring())
.transition(.move(edge: .leading))
.zIndex(4)
.gesture(DragGesture()
.onChanged { val in
self.xOffset = val.translation.width
}
.onEnded { val in
self.xOffset = .zero
}
)
}
}
}