标签: nstitlebaraccessoryviewcontroller

添加Subview到NSWindow Titlebar

我想创建一个自定义的窗口工具栏,但不使用实际的NSToolbar(因为它在某些情况下不能满足我的需要而且我不能按照我想要的方式设置它),因此我需要添加子视图到窗口标题栏.它应该如下所示:自定义工具栏的屏幕截图

一种可行的方式是:

[[[_window contentView] superview] addSubview:_titlebarView];
Run Code Online (Sandbox Code Playgroud)

但这有问题,它会在Yosemite(NSWindow warning: adding an unknown subview: <NSView: 0x608000122b20>)上引发警告,所以这似乎不是正确的方法.

目前我将工具栏视图添加到标题栏视图:

[[[_window standardWindowButton:NSWindowCloseButton]
    superview] addSubview:_titlebarView];
Run Code Online (Sandbox Code Playgroud)

但这也错了.

由于我的应用程序仅针对OS X 10.10(Yosemite),因此我可以使用仅限Yosemite的API,所以我看了一下,NSTitlebarAccessoryViewController并设法成功地将其子类化并使用它NSWindowaddTitlebarAccessoryViewController:方法.使用这种方法仍然存在一个问题,可能的值layoutAttribute是:

  • NSLayoutAttributeBottom
    将视图添加到窗口标题栏的底部,同时保留视图的高度.
  • NSLayoutAttributeRight
    将视图添加到窗口标题栏的右侧,将视图剪切到标题栏的高度.

NSLayoutAttributeBottom不适合我,因为我需要在窗口标题栏的顶部放置一些东西(见上面的截图)并将红绿灯居中. NSLayoutAttributeRight将是我所需要的,但我找不到增加标题栏高度的方法,因此视图被剪切到标题栏高度,这对我来说毫无用处.(注意:使用带纹理的窗口并更改内容边框不起作用,因为它不会更改实际的标题栏高度)

建议的方法是什么?我更愿意使用官方API并使用AccessoryViewController方法,如果可能有一个大于默认标题栏的视图.

cocoa objective-c appkit osx-yosemite nstitlebaraccessoryviewcontroller

27
推荐指数
2
解决办法
5468
查看次数

如何使用NSTitlebarAccessoryViewController?

任何人都可以告诉我如何使用NSTitlebarAccessoryViewController,用一个例子将子视图添加到视图中吗?由于我是mac编程的新手,你可能需要从基础知识中解释.请.

xcode cocoa objective-c osx-yosemite nstitlebaraccessoryviewcontroller

3
推荐指数
1
解决办法
2987
查看次数