我想改变NSWindow标题栏的高度。
以下是一些例子:
和...
我可以使用NSToolbar,但问题是我无法将视图放置得非常高(例如:我不能将segmentedControl放在比图片更高的位置,因为还有标题栏)
如果删除标题栏,我无法放置NSToolbar,窗口也不能移动。
你有什么想法吗?
答案 0 :(得分:23)
这比人们想象的要容易得多。我也开始寻求为我的应用做类似的事情。
Real App Store应用:
我的App Store应用程序外观相似:
对INAppStoreWindow没有任何不尊重,这是一个非常好的实现和坚实。我从中看到的唯一缺点是,有很多绘图代码以及Apple可以随时调整的TitleBar颜色的硬编码设置。
所以我就是这样做的:
A)创建一个标题栏,其中包含标题栏,关闭,最小化,阴影,调整大小,全屏 - 主窗口全部设置。 注意:您不需要纹理窗口,也不需要设置标题
B)接下来添加一个带有这些设置的标准工具栏:
删除所有工具栏项目,并按以下顺序添加这些项目
NSSegmentControl(51 x 24) - |灵活的空间| - NSSearchField(150 x 25)
C)在你的内容工具栏正下方的视图中添加一个常规大小的NSButton集,如下所示:
好的,到目前为止很容易,对吧?!
在您的Window Controller或app delegate .... 设置IBOutlet到您的NSButton
注意:请记住在界面构建器
中连接IBOutlet好的,不要害怕我们现在必须编写一小段代码:
在awakeFromNib或windowDidLoad ....
所以代码看起来与此类似:
NSView *themeView = [self.contentView superview];
NSUInteger adj = 6;
[self.btnFeatured removeFromSuperview];
self.btnFeatured.frame = NSMakeRect( self.btnFeatured.frame.origin.x,
self.window.frame.size.height - self.btnFeatured.frame.size.height - adj,
self.btnFeatured.frame.size.width, self.btnFeatured.frame.size.height);
[themeView addSubview:self.btnFeatured];
就是这样!您可以使用插座启用/禁用按钮,选择时设置遮罩图像,启用/禁用工具栏甚至隐藏所有内容并添加窗口标题。如果Apple改变他们的标准Window Titlebars,所有这一切都不用担心。
P.S。在这个帖子中没有使用任何私人框架!
答案 1 :(得分:4)
您必须继承NSWindow
并执行自定义窗口框架绘制。它不仅仅是一个标题栏。这是关于整个窗口框架(所以你可以,如果你愿意,你可以在底部放置关闭/最小化/缩放按钮)。
答案 2 :(得分:4)
INAppStoreWindow是NSWindow的子类,它告诉你如何更改标题栏的高度。
https://github.com/indragiek/INAppStoreWindow
http://iloveco.de/adding-a-titlebar-accessory-view-to-a-window/
此示例告诉您如何在标题栏中添加按钮。
答案 3 :(得分:2)
有一些基于INAppStoreWindow的新解决方案,没有警告和日志消息,对于想要更改NStitlebar高度的人,更改交通信号灯的位置,在NStitlebar上添加项目(例如NS按钮)并更改其位置,请在下面查看。
WAYWindow: https://github.com/weAreYeah/WAYWindow
NStitlebar_with_item: https://github.com/ZHANGneuro/NStitlebar_with_item