有時候我們需要自定義titlebar呻粹,方法有二:其一,保留系統(tǒng)的titlebar魂角,只是隱藏titlebar昵济;其二,不使用系統(tǒng)的titlebar野揪,完全自定義访忿,但是會出現(xiàn)window四個角的圓角不顯示的問題。接下來就對每個方法進行詳細的分析斯稳。
方法一:保留系統(tǒng)的titlebar
1海铆、新建一個工程,保留系統(tǒng)生成的titlebar挣惰,將標(biāo)題按鈕去除卧斟。
2、在AppDelegate中將titlebar隱藏
self.window.titleVisibility = NSWindowTitleHidden;
3憎茂、什么都沒有珍语,但是我們還是發(fā)現(xiàn)上邊有一個titlebar的區(qū)域,我們加入一個紅色背景視圖竖幔,讓效果更明顯板乙。
NSView *view = [[NSView alloc] initWithFrame:self.window.contentView.bounds];
view.wantsLayer = YES;
view.layer.backgroundColor = [NSColor redColor].CGColor;
[self.window.contentView addSubview:view];
4、我們現(xiàn)在可以明顯看到拳氢,titlebar的區(qū)域還是存在募逞,這樣并不是我們想要的。
所以我們要設(shè)置window的style,titlebar的顯示為透明
self.window.titlebarAppearsTransparent = YES;
self.window.styleMask = self.window.styleMask | NSWindowStyleMaskFullSizeContentView;
好馋评,這樣我們就可以隨心所欲得在上面添加我們想要的內(nèi)容了放接。
方法二:不使用系統(tǒng)的titlebar
1、新建一個工程留特,在xib里去除window的titlebar
titlebar的區(qū)域已經(jīng)不在了纠脾,很好玛瘸。但是細心的你就會發(fā)現(xiàn),四邊的圓角也同時失效了乳乌,變成了直角捧韵。
2、同樣汉操,為了方便看效果再来,我們增加一個紅色背景的視圖。
3磷瘤、接下來我們對contentView進行切角芒篷,為了效果明顯一點,我們將半徑設(shè)置大一點采缚。
self.window.contentView.wantsLayer = YES;
self.window.contentView.layer.frame = self.window.contentView.frame;
self.window.contentView.layer.masksToBounds = YES;
self.window.contentView.layer.cornerRadius = 30.0;
4针炉、這時候我們的圓角已經(jīng)出來了,但是底部背景還是直角扳抽,我們將其window顏色設(shè)置為透明
并設(shè)置layer為白色底部篡帕,防止留有透明的空隙。
self.window.backgroundColor = [NSColor clearColor];
self.window.contentView.layer.backgroundColor = [NSColor whiteColor].CGColor;
好贸呢,這樣我們就可以隨心所欲得在上面添加我們想要的內(nèi)容了镰烧,而且圓角的半徑可以自由設(shè)置。