Cocoa 让自定义view铺满整个NSWindow

在OS X开发中,为消除NSWindow顶部titlebarView,使自定义view铺满整个window,以往采用的方法在10.10 Yosemite后会导致警告。解决方法是利用NSFullSizeContentViewWindowMask,通过代码或IB设置Full Size Content View,实现简洁且有效全屏效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们通过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之前更方便更实用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值