我们通过IB拖到窗体中的控件都是放到NSWindow的contentView视图中的,但是这个contentView不是铺满整个window的,顶部会有一个系统风格的titlebarView,现在项目需要让自定义的view可以铺满整个window。
在OS X 10.10之前,我们可以通过简单的两行代码来搞定:
//把自定义的view添加到contentView的superview中,也就是NSThemeView
NSView *themeView = [window.contentView superview];
[themeView addSubview:self.viewCustom positioned:NSWindowBelow relativeTo:nil];
但是在Yosemite以后,运行以上代码,会得到一段警告:
NSWindow warning: adding an unknown subview: <NSView: 0x608000120fa0>. Break on NSLog to debug.
虽然目前并不会影响程序的执行,但是对于有点洁癖的人来说,看到这段警告还是很不爽的,那么在Yosemite我们要怎么避免这个错误而实现我们的目的呢?
OS X 10.10之后,NSWindow的styleMask新增了一个NSFullSizeContentViewWindowMask,可以通过NSWindow的setStyleMask:来设置,也可以直接在IB中勾选Full Size Content View选项。设置完后contentView就会铺满整个窗体,包括titlebar部分。一个设置就搞定了,比10.9之前更方便更实用。