问题标签 [nstitlebaraccessoryviewcontroller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
5921 浏览

objective-c - 将子视图添加到 NSWindow 标题栏

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

一种可能的方法是:

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

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

但这也感觉不对。

由于我的应用程序仅针对 OS X 10.10 (Yosemite),因此我可以使用仅限 Yosemite 的 API,因此我查看NSTitlebarAccessoryViewController并成功地对其进行了子类化,并通过NSWindow'saddTitlebarAccessoryViewController:方法使用它。使用这种方法仍然存在一个问题,可能的值为layoutAttribute

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

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

推荐的方法是什么?如果有可能拥有比默认标题栏更大的视图,我更愿意使用官方 API 并使用 AccessoryViewController 方法。

0 投票
1 回答
3991 浏览

objective-c - 如何使用 NSTitlebarAccessoryViewController?

谁能告诉我如何使用 NSTitlebarAccessoryViewController,通过示例将子视图添加到视图中?由于我是 Mac 编程的新手,您可能需要从基础知识进行解释。请。

0 投票
1 回答
346 浏览

swift - NSTitlebarAccessoryView 中 NSTextField 的 IBOutlet

NSTextField在基于文档的应用程序中,我使用 10.10 的新 API 在文档窗口的标题栏中添加了一个标签 ( ):

我从我的 mainNSViewController中调用它,我可以免费控制窗口附带的主视图:

因此,按照文档的建议,将包含我的标签的自定义视图加载到我的标题栏中。到目前为止一切都很好。

现在在某些时候,我必须在运行时访问该标签以从我的应用程序中的某个位置更改它的字符串值。

我尝试为控制子视图IBOutlet的标签添加一个NSTitlebarAccessoryViewController,并且正如预期的那样,NSTitlebarAccessoryViewController我可以操作标签stringValue。但我不能从那里做太多。

我尝试在 中创建一个 设置标签字符串的函数,并通过from myNSTitlebarAccessoryViewController的全局实例访问该函数,但是虽然我可以访问此函数并将其传递给字符串,但函数中标签的引用总是展开为无(崩溃)。NSTitlebarAccessoryViewController()mainViewControlerIBOutlet

那么为什么当从函数所在的类中的任何地方访问时,出口在函数中解包为 nil 呢?

我必须能够从控制器访问标签或在我的 windows 中查看mainView

我怎样才能做到这一点..?

我可能的结构

0 投票
3 回答
1579 浏览

macos - 将 NSTitlebarAccessoryViewController 添加到标题栏/工具栏的左侧

我已经实现了一个统一的标题栏/工具栏,现在想在栏上添加两个按钮。它们需要位于最左侧,就在红绿灯按钮的右侧。我正在创建一个与系统偏好设置非常相似的工具栏。

我查看了用于添加的 API,NSTitlebarAccessoryViewController唯一有效的属性layoutAttributeNSLayoutAttributeRight(将视图添加到工具栏的最右侧),NSLayoutAttributeBottom它基本上将视图放置在其自己的工具栏中的统一工具栏下方。

我不想要这些选项,那么如何在统一工具栏的最左侧添加一堆按钮?

在此处输入图像描述

0 投票
1 回答
308 浏览

objective-c - 将 NSTitlebarAccessoryViewController 添加到 NSWindow 后滞后

以下代码最近添加到现有应用程序中。buttonHolderView 是一个 NSView,里面有一个 NSButton 控件。

应用程序向用户呈现一个或多个窗口,每个窗口都有一个播放视频源的 NSOpenGLView。随着这些窗口数量的增加,OS X 10.10 的响应延迟也会增加。似乎主线程被征税更多。

使用新代码和不使用新代码运行之间的仪器时间分析器数据比较显示,在 [NSApplication sendEvent:] 中花费的时间百分比小于标题中没有附件视图时通常的 1/2(3.4% 到 1.4%)酒吧这是预期的滞后经验。在 [NSView displayIfNeeded] 中花费的时间也显着增加(从 26% 增加到 39%)。

任何关于如何纠正这种滞后的想法都值得赞赏。

0 投票
1 回答
143 浏览

macos - 重新定位的标准窗口按钮移回顶部

我正在重新定位NSWindow标准按钮,如下所示:

NSButton *closeButton = [self standardWindowButton:NSWindowCloseButton]; [closeButton setFrameOrigin: NSMakePoint(50,20)];

这可以完美地工作,直到在窗口上出现一个模式表,此时按钮会跳到左上角(通常在哪里)。我想将它放在标题栏中(使用NSTitlebarAccessoryViewController.

自从El Capitan之后才开始发生这种情况,我无法让它自动重新定位回中心。我尝试观察窗口事件并强制重新布局,但它会在一段时间后重置。有什么方法可以重新定位这些按钮并使它们“粘住”?

0 投票
2 回答
156 浏览

macos - 如何激活来自不同类的附件标题栏视图控制器中的微调器?

我有NSTitlebarAccessoryViewController一个不确定NSProgressIndicator的。我希望能够在我的应用程序的不同位置启动和停止它,有时在视图控制器之外。

我对 OS X 开发相当陌生。我听说在 OS X 中,响应者链比在 iOS 中使用得更多。我已经查看了响应者链以及如何通过 执行此操作NSResponder,但我真的无法理解它。下面是可视化的屏幕截图。

在此处输入图像描述

这是我的标题栏 acc 的代码。视图控制器:

然后我想通过协议扩展来调用它:

我还希望从不同的 viewController 启动和停止它,因此它不限于协议扩展。

0 投票
0 回答
292 浏览

cocoa - NSTitlebarAccessoryViewController 和隐藏属性

最近“发现NSTitlebarAccessoryViewController并喜欢它 - 除了我需要我的应用程序在 10.11 下运行并且该hidden属性在 10.12 之前不存在。

任何建议如何在 10.12 之前顺利显示/隐藏NSTitlebarAccessoryViewController实例,即动画视图出/入?

我已经尝试添加一个高度约束并对其进行动画处理(即约束constant属性 - 但NSTitlebarAccessoryViewController会自动获得一个自动调整大小约束(即使在插入视图之前将其关闭),这会导致自动布局异常,因为它会强制视图达到其初始高度和防止改变它..

通过代理更改视图的frame属性animator也不会导致视图高度的动画更改。

0 投票
1 回答
25 浏览

cocoa - 即使选项卡组中有多个窗口,NSWindow 选项卡栏也会隐藏

我正在尝试将选项卡添加到旧代码库,并遵循文档。但是标签栏仍然隐藏,即使标签组中有多个窗口:菜单窗口>显示上一个标签窗口>显示下一个标签按预期工作。

之后有一个断点:

选项卡栏是可见的,直到我继续断点。

检查NSWindow.tabGroup.tabBarVisible之前和之后的选项卡栏也设置为可见。