ePi*_*rat 27 cocoa objective-c appkit osx-yosemite nstitlebaraccessoryviewcontroller
我想创建一个自定义的窗口工具栏,但不使用实际的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
并设法成功地将其子类化并使用它NSWindow
的addTitlebarAccessoryViewController:
方法.使用这种方法仍然存在一个问题,可能的值layoutAttribute
是:
NSLayoutAttributeBottom
NSLayoutAttributeRight
这NSLayoutAttributeBottom
不适合我,因为我需要在窗口标题栏的顶部放置一些东西(见上面的截图)并将红绿灯居中.
NSLayoutAttributeRight
将是我所需要的,但我找不到增加标题栏高度的方法,因此视图被剪切到标题栏高度,这对我来说毫无用处.(注意:使用带纹理的窗口并更改内容边框不起作用,因为它不会更改实际的标题栏高度)
建议的方法是什么?我更愿意使用官方API并使用AccessoryViewController方法,如果可能有一个大于默认标题栏的视图.
WAYAppStoreWindow可能会满足您的需求。它是明确构建的,以避免 Yosemite 中的子视图警告,指定自定义窗口标题栏高度并将子视图添加到标题栏。
归档时间: |
|
查看次数: |
5468 次 |
最近记录: |