假设我们在SwiftUI中具有可操作的editMode环境的NavigationView具有以下navigationBarItems:
@Environment(\.editMode) var mode
...
.navigationBarItems(trailing: HStack {
if mode?.wrappedValue == .active {
Text("Cancel")
}
EditButton()
}
)第一次激活editMode后,尾随导航条项的位置不会返回到原始位置,以下是屏幕截图(模拟器中iPad的右侧):

然后,激活编辑模式

到目前为止,行为与预期一样,但当我们切换到停用时,会发生以下情况:

请注意,编辑按钮向左移动,有什么方法可以解决这个问题吗?这是预期的行为吗?我希望它就像editMode停用时的第一张照片
发布于 2020-07-09 10:54:27
我已经把这作为一个bug报告给苹果了。当您减少HStack中的项数时,它似乎不会自动调整大小。因此,剩下的单个按钮位于前两个按钮占据的空间的中心。
未在Xcode 12.0测试版2中修复
发布于 2020-07-30 17:42:43
这个解决方案可能有点老生常谈,但它解决了这个不必要的问题。
我使用了一个私有状态:
@State private var bug: Bool = false(无论何时需要,您都可以调用self.bug = false (例如.onAppear{...}),并且不要忘记在点击编辑按钮时执行self.bug = true ...)
多亏了这个状态,你可以给编辑按钮加上一个条件偏移量:
.offset(x: self.bug ? 30 : 0)https://stackoverflow.com/questions/59434636
复制相似问题