【发布时间】:2011-11-11 06:56:34
【问题描述】:
正如其他地方所讨论的,NSTabView 没有 setBackgroundColor 方法,并且子类化 NSTabView 并使用 drawRect 来控制它不再起作用 - 因为它不会绘制前 10%,即分段控制按钮下方的位。
现在我对解决这个问题的工作量感到有点惊讶;见
- 代码:https://github.com/dirkx/CustomizableTabView/blob/master/CustomizableTabView/CustomizableTabView.m
我想知道我是否走错了路。以及如何更好、更简单地做到这一点:
-
NSSegmentStyleTexturedSquare 似乎为我提供了一个半透明的分段控件。这意味着我需要做额外的工作来隐藏任何边框线(第 240、253 行)。
有没有更好的方法来做到这一点? IE。否定它的透明度?
或者有没有办法可以使用实际/原始分段选择按钮?
-
我发现我需要的颜色——比如 [NSColor windowBackgroundColour] 没有设置为任何有用的颜色(即那个是透明的)——所以现在我对它们进行硬编码(第 87、94 行)。
- 有更好的方法吗?
-
我发现我需要一大堆蓬松的方法来保持同步(第 128、134 行等)。
- 这可以避免吗?
-
我发现模仿重新缩放的聪明才智意味着我需要持续关注分段控制框并删除/调整它的大小。即便如此 - 它还不如原来的那么好
- 有没有比第 157 行更好的方法来做到这一点 - 即听说调整大小?而不是一直这样做?
-
当焦点从窗口移开时,segementControl 会变暗 - 与真正的 McCoy 不同。
- 这很容易避免吗?有没有便宜的方法来跟踪这个?
-
或者这是错误的方法 - 我应该在这里只关注一个透明的洞 - 让 NSTabViewItem 绘制背景?但无论如何 - 那么我仍然有分段控制框的问题 - 或者有没有办法让它再次成为默认值。
- 尝试此操作时 - 我卡在以“真实”窗口背景颜色(即“透明”)绘制的顶部 20-30 像素上,因此颜色不会一直运行到顶部或后面分段栏直到边框 - 而是在分段控件底部下方约 8 个像素处停止。
感谢您的反馈 - 因为对于这样一个简单的事情来说,这感觉太离谱/不太理想 - 非常感谢。黑客/分叉 github 代码的布朗尼积分 :) :) :) 正如一行运行代码所说的超过一千个单词。
Dw.
【问题讨论】:
标签: macos cocoa nscolor nstabview