寫在前面的話
在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);
}];