macOS NSWindow.Level层级
macOS NSWindow.Level层级

macOS NSWindow.Level层级

NSWindow.Level 是 macOS 中用于控制窗口层级(z-index) 的属性,决定窗口是否覆盖或被其他窗口覆盖。窗口层级会影响窗口是否浮动在最前、是否能被点击穿透等。

标准窗口层级列表(完整)

extension NSWindow.Level {
    public static let normal: NSWindow.Level         // 默认窗口层级(0)
    public static let floating: NSWindow.Level       // 浮动层级(3)
    public static let submenu: NSWindow.Level        // 子菜单窗口层级
    public static let tornOffMenu: NSWindow.Level    // 拖出的菜单窗口层级
    public static let mainMenu: NSWindow.Level       // 主菜单层级
    public static let statusBar: NSWindow.Level      // 状态栏窗口层级
    public static let modalPanel: NSWindow.Level     // 模态对话框层级
    public static let popUpMenu: NSWindow.Level      // 弹出菜单层级
    public static let screenSaver: NSWindow.Level    // 屏幕保护程序层级(最高)
    
    @available(macOS, introduced: 10.0, deprecated: 10.13)
    public static let dock: NSWindow.Level           // Dock 层级(已弃用)
}

实际的 rawValue 数值

.normal:值为0,普通窗口;

.floating:值为3,工具窗口,浮动在普通窗口上;

.modalPanel:值为8,模态对话框;

.mainMenu:值为24,主菜单层级;

.statusBar:值为25,比浮动窗口还高;

.popUpMenu:值为101,弹出菜单(如右键菜单);

.submenu:值为102,子菜单;

.tornOffMenu:值为103,拖出的菜单;

.screenSaver:值为1000,最顶层;

.dock:值为-2147483623(已废弃),Dock 层级,仅用于早期系统。

使用建议

1、普通窗口:建议使用 .normal;

2、浮动工具栏:建议使用 .floating;

3、全屏遮罩 / 截图:建议使用 .screenSaver;

4、状态栏小窗:建议使用 .statusBar;

5、避免使用 .dock,已经被废弃,替代方案是 .desktop 或 .normal;

自定义层级

可以使用Level(rawValue:)自定义层级:

let customLevel = NSWindow.Level(rawValue: 500)
window.level = customLevel

相关文章

1、macOS窗口NSWindow:https://fangjunyu.com/2025/07/01/macos%e7%aa%97%e5%8f%a3nswindow/

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注