MAC开发-去掉系统titleBar

写在前面的话

在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);
}];

最重要的内容

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,996评论 25 708
  • Swift版本点击这里欢迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh阅读 25,522评论 7 249
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,198评论 4 61
  • 沒有開始 就沒有現在 剛剛開始 大家覺得我的文字簡單 沒有意思 剛剛開始 大家覺得我的畫很容易 但是經過時間考驗 ...
    蔡振源阅读 234评论 0 2
  • 1 每到周末,杨柳巷就突然多出许多人来,如果你从楼上向下看,整个巷子就像春运时掀了顶的火车车厢,被挤得水泄不通。谢...
    龙江石阅读 437评论 4 6