假设对于SwiftUI中具有可操作editMode环境的NavigationView,我们具有以下navigationBarItems:
@Environment(\.editMode) var mode
...
.navigationBarItems(trailing: HStack {
if mode?.wrappedValue == .active {
Text("Cancel")
}
EditButton()
}
)
在首次激活editMode后,尾随的导航栏项目的位置将不会返回到原始位置,这些是屏幕截图(模拟器中iPad的右边缘):
然后,激活编辑模式
到目前为止的行为均符合预期,但是当我们切换停用时,发生了以下情况:
请注意,“编辑”按钮向左移动,是否可以解决此问题?这是预期的行为吗?我希望它会像editMode停用时的第一张图片一样
答案 0 :(得分:0)
我已经向Apple报告这是一个错误。当您减少其中的项目数时,HStack似乎并没有调整自身大小。因此,剩余的单个按钮位于前两个按钮所占据的空间的中心。
在Xcode 12.0 beta 2中未修复
答案 1 :(得分:0)
该解决方案虽然有点笨拙,但可以解决此不必要的问题。
我使用了私有状态:
@State private var bug: Bool = false
(然后您会在需要时致电self.bug = false
(例如.onAppear{...}
)
而且,当点击编辑按钮时,别忘了做self.bug = true
...
由于这种状态,您可以在编辑按钮上添加条件偏移量:
.offset(x: self.bug ? 30 : 0)