How to change the color of the tab button and the

2019-04-02 22:38发布

I am working on OS X app, and I am using NSTabView. I would like to change the background color of the tab (button). Currently the background is blue, (Attribute Inspector -> Appearance = Inherited (Aqua).

Same is true with the background color of the view itself. I subclass the NSTabView, and I add inside this code:

 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));

which does change the background color, but also cover the tabs with the background color...

Any help with customization of the NSTabView will be deeply appreciated.

For those who will jump to conclusion that this is duplicate question...please take a look on the dates in the answers on similar questions...they are all old about 7-8 years...

2条回答
啃猪蹄的小仙女
2楼-- · 2019-04-02 23:04

After a couple of hours, I think you can't do it with NSTabView. The documentation says you can no longer do it and NSTabView will respect the theme chosen by the OS instead.

This led me to How to draw your own NSTabView tabs?, which I'm sure you've seen. But despite the documentation, SetImage/ForSegment did not work for me.

[NSSegmentedControl Colors seems to have found one solution, and SMSegmentView is another, although there may be licensing issues. Both these solutions are more recent.

I hope the above will prove useful to you and good luck.

查看更多
相关推荐>>
3楼-- · 2019-04-02 23:27

the following code is the one that i use for doing that, working right now with 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];

And the result is something like this

Image from the tab

查看更多
登录 后发表回答