写在前面的话
在Mac开发的过程中,会有这样的需求:去掉系统自带的titleBar,具体效果类似QQ这样的应用:
qq截图.png本文就此效果展开。
本文效果预览
截图1.png具体实现
1、首先新建一个MacOS工程,在Main.storyboard选中Window,勾选属性Full Size Content View,实现的效果就是titleBar和下面的view合并到一起。
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);
}];
网友评论