MAC开发-去掉系统titleBar

写在前面的话

在Mac开发的过程中,会有这样的需求:去掉系统自带的titleBar,具体效果类似QQ这样的应用:

qq截图.png

本文就此效果展开。

本文效果预览
MAC开发-去掉系统titleBar_第1张图片
截图1.png
具体实现

1、首先新建一个MacOS工程,在Main.storyboard选中Window,勾选属性Full Size Content View,实现的效果就是titleBar和下面的view合并到一起。

MAC开发-去掉系统titleBar_第2张图片
B344847F-E5BA-4E3A-A0D9-4952546A7047.png

也可以用代码实现:

self.window.styleMask = self.window.styleMask | NSWindowStyleMaskFullSizeContentView;

2、去掉标题和背景色关键代码

//设置为点击背景可以移动窗口
[self setMovableByWindowBackground:YES];
//设置标题栏透明
self.titlebarAppearsTransparent = YES;
//隐藏窗口标题
self.titleVisibility = NSWindowTitleHidden;

3、修改系统的功能按钮位置关键代码

//获取到windows的主视图
NSView * themeView = self.window.contentView.superview;
//根据层级结构获取到标题栏视图
NSView * titleView = themeView.subviews.count > 1?themeView.subviews[1]:nil;
titleView.autoresizesSubviews = YES;
    
//重新对标题栏视图的尺寸进行布局,使得系统的功能按钮出现在自定义标题中的竖直中间
[titleView mas_remakeConstraints:^(MASConstraintMaker *make) {
    make.left.equalTo(@10);
    make.width.equalTo(@70);
    make.top.equalTo(@18);
    make.height.equalTo(@22);
}];

最重要的内容

源码地址:
https://github.com/yakerapp/TitleBar

你可能感兴趣的:(MAC开发-去掉系统titleBar)