如何在NSTabView中更改选项卡按钮的颜色和视图本身?

时间:2015-07-15 00:21:17

标签: objective-c macos cocoa nstabview

我正在开发OS X应用程序,我正在使用NSTabView。我想更改选项卡(按钮)的背景颜色。目前背景为蓝色,(属性检查器 - >外观=继承(Aqua)。

视图本身的背景颜色也是如此。我将NSTabView子类化,并在此代码中添加:

 CGContextRef context = (CGContextRef) [[NSGraphicsContext currentContext] graphicsPort];
 CGContextSetRGBFillColor(context, 241.0/255.0, 252.0/255.0, 255.0/255.0, 1.0);
 CGContextFillRect(context, NSRectToCGRect(dirtyRect));

确实改变了背景颜色,但也覆盖了背景颜色的标签......

非常感谢任何有关定制NSTabView的帮助。

对于那些会得出这个重复问题的结论的人......请看一下类似问题的答案中的日期......他们都是7-8岁了...

2 个答案:

答案 0 :(得分:2)

几个小时之后,我认为你不能用NSTabView做到这一点。 文档说你不能再这样做了,NSTabView将尊重操作系统选择的主题。

这导致我How to draw your own NSTabView tabs?,我相信你已经看过了。NSSegmentedControl Colors。但是尽管有文档,SetImage / ForSegment并不适合我。

[SMSegmentView似乎找到了一个解决方案,Limits the maximum execution time是另一个解决方案,尽管可能存在许可问题。这两种解决方案都是最新的。

我希望以上内容对你有用并祝你好运。

答案 1 :(得分:-2)

以下代码是我用来执行此操作的代码,现在正在使用iOS 9

[[UITabBar appearance] setBarTintColor:[UIColor colorWithRed:(44/255.00) green:(71/255.00) blue:(95/255.00) alpha:1]]; //TAB BAR TINT COLOR
[[UIView appearanceWhenContainedIn:[UITabBar class], nil] setTintColor:[UIColor whiteColor]];
[[UITabBar appearance] setTintColor:[UIColor colorWithRed:(249/255.00) green:(153/255.00) blue:(44/255.00) alpha:1]];//BUTTON TINT COLOR
[[UITabBar appearance] setTranslucent:NO];
[[UITabBar appearance] setAlpha:1];

结果是这样的

Image from the tab