macos - 我可以在其标签栏内获取 NSTabViewItem 的内容矩形吗?
问题描述
有没有办法在 aNSTabViewItem
的栏中获取 a 的内容矩形NSTabView
?
当项目处于活动状态时,该view
属性只是要显示的视图。
该tabView
属性为我提供了选项卡视图,但它的框架是选项卡视图使用的整个区域(包括当前显示的内容视图)。
我想将 aNSPopover
完全对齐在特定的下方,NSTabViewItem
但因此我需要它的内容矩形。
解决方案
不是直接的。没有典型的 API 来获取实际选项卡控件段的框架。如果您通过使用每个段的宽度估计框架来将选项卡视图的开关交换为 NSSegmentedControl,则可以粗略地做到这一点,但是仍然没有明确的方法来获取给定段的实际框架(直到该段被绘制的那一刻NSSegmentedCell)。
但是,您可以使用辅助功能 API 在选项卡视图中获取该段的矩形。这是一种非常愚蠢的做法,但这是可能的。
NSTabViewItem 由于某种原因不符合 NSAccessibility,但您可以使用旧的已弃用 API:
[tabViewItem accessibilityAttributeValue:NSAccessibilityPositionAttribute];
[tabViewItem accessibilityAttributeValue:NSAccessibilitySizeAttribute];
这些为您提供屏幕空间中的坐标,因此您需要将它们转换为窗口 (convertRectFromScreen) 和选项卡视图自己的框架 (convertRect:fromView:)。乏味但可行。
推荐阅读
- python - 从零开始的神经网络不收敛
- azure - 删除放置位置的文件
- voip - Polycom VVX 600 VOIP 电话需要将近 5 分钟才能重新连接到辅助互联网
- c# - 错误:无法从“Microsoft.Office.Interop.MSProject.Task”转换为“System.Action”
- scrollmagic - 在动画发生时让 ScrollMagic 暂停,然后转到下一个场景
- amazon-web-services - AWS 预算每天会监控多少次账户产生的成本?
- c++ - 计算移动平均线的C++程序
- python - 在python中解析数学表达式
- netsuite - NetSuite UserEvent SuiteScript 2.0 未在支持案例创建时触发
- linux - 用sed中的单词替换可能的短语?