Swiftui 使用右上角的快捷菜单

Swiftui 使用右上角的快捷菜单,swiftui,Swiftui,使用IgnoressAferarea()将快捷菜单按钮放置在顶部后角时,它在快捷菜单预览中正常工作: 但不在实际设备/模拟器上: 当我在菜单本身上再次使用ignoresSafeArea()时,会出现一种奇怪的行为(iOS 14.5):如果不填充菜单,则会松开函数;如果填充,则当菜单出现时,按钮会向下移动,并且菜单的按钮和菜单之间会有一个奇数间隔: 有没有办法让菜单正确地显示在右上角 示例代码: struct菜单按钮示例视图:视图{ var body:一些观点{ 颜色:黄色 .ignores

使用IgnoressAferarea()将快捷菜单按钮放置在顶部后角时,它在快捷菜单预览中正常工作:

但不在实际设备/模拟器上:

当我在菜单本身上再次使用ignoresSafeArea()时,会出现一种奇怪的行为(iOS 14.5):如果不填充菜单,则会松开函数;如果填充,则当菜单出现时,按钮会向下移动,并且菜单的按钮和菜单之间会有一个奇数间隔:

有没有办法让菜单正确地显示在右上角

示例代码:

struct菜单按钮示例视图:视图{
var body:一些观点{
颜色:黄色
.ignoresSafeArea()
.overlay(self.menuButton,对齐:.toptraining)
}
@ViewBuilder变量菜单按钮:一些视图{
菜单(
内容:{
钮扣(
行动:{
调试打印(“操作”)
},
标签:{
标签(“操作”,系统映像:“xmark”)
}
)
},
标签:{
钮扣(
行动:{},
标签:{
ZStack{
圈()
.foregroundColor(.绿色)
.框架(宽度:30,高度:30)
图像(系统名称:“省略号”)
.foregroundColor(.白色)
}
}
)
.填充(20)
}
)
}
}

这可能是由于导航栏造成的。
您可以尝试添加此代码

.navigationBarHidden(true)

创建一个常数,获得完整的屏幕高度,并将其分配给该常数,然后更改主体代码,如下面代码所示,它将适用于每个设备

let customHeight = UIScreen.main.bounds.height
    var body: some View {
        Color.yellow
            .overlay(self.menuButton, alignment: .topTrailing)
            .statusBar(hidden: true)
            .frame(height: customHeight + (customHeight/18))
            .ignoresSafeArea()
    }

Xcode 12.5/iOS 14.5在这里工作很好。这太奇怪了。对我来说,它只在SwiftUI预览中起作用,但它在iPhone12模拟器和iPhoneX设备上应用了安全区域。该按钮是否看起来像设备上带有凹口的第一个屏幕截图(顶部没有填充)?