更改 Cocoa 中 NSTableView 的突出显示颜色?
我正在开发 Cocoa 应用程序并遇到突出显示问题。 MAC OS X 应用程序中的标准突出显示颜色是蓝色,但它不适合我的应用程序,因为由于设计概念,我需要绿色来突出显示。
我尝试对 NSTableview 进行子类化并重写方法
- (void)highlightSelectionInClipRect:(NSRect)clipRect
,但没有帮助。
如何解决这个问题?
I am developing a Cocoa application and encountered a problem with highlighting. Standard highlighting color in MAC OS X applications is blue, but it doesn't suit my app, since because of design concepts, I need a green color for highlighting.
I tried to subclass NSTableview and override method
- (void)highlightSelectionInClipRect:(NSRect)clipRect
but it didn't help.
How to fix this problem?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我正在使用这个,到目前为止效果很好:
I am using this, and so far works perfectly:
我也花了几个小时寻找这个问题的答案,虽然我发现了很多碎片,但没有一个是完整的。所以在这里我提交了另一种方法,我正在成功使用它。
1) 将你的 NSTableView SelectionHighLightStyle 设置为 None
这是必要的,以确保 OSX 不会简单地将它自己的高亮显示在你的顶部,留下蓝色高亮显示。
您可以通过 IB 或代码来完成此操作。
2)子类NSTableView,并重写drawRow。
这会将所选行的背景颜色设置为主要(活动窗口)和次要(非活动)。
3) 实现一个 NSTableViewDelegate,将其附加到您的 NSTableView,并实现 willDisplayCell。
这将允许您在选择/取消选择时更改行的文本颜色,以防您的选择颜色使文本难以阅读。
你就完成了。
I searched for hours for an answer on this as well, and although I found many fragments, none of them were complete. So here I submit another approach, which I am using with success.
1) Set your NSTableView selectionHighLightStyle to None
This is necessary to ensure that OSX does not simply apply it's own highlights over the top of yours, leaving you with a blue highlight.
You can do this either through IB or via code.
2) Subclass NSTableView, and override drawRow.
This will set the background color for your selected rows to primary (active window) and secondary (inactive).
3) Implement an NSTableViewDelegate, attach it to your NSTableView, and implement willDisplayCell.
This will allow you to change the textColor of the rows on selection/deselection, in case your selection colors make the text hard to read.
And you are done.
我使用此代码来处理高度,代码位于我的自定义单元格文件中
I use this code to deal with the height, the code is in my custom cell file