修改NSScrollView滚动条的颜色

修改NSScrollView滚动条的颜色

项目中需要修改滚动条的颜色,查阅自己资料,自己总结,可以按照如下方式实现:

首先自定义滚动条,CustomScroller.h文件

#import <Cocoa/Cocoa.h>

@interface CustomScroller : NSScroller

@end

CustomScroller.m文件

#import "CustomScroller.h"

@implementation CustomScroller
- (void)drawKnob {
    [super drawKnob];
    
    NSRect knobRect = NSInsetRect([self rectForPart:NSScrollerKnob], 3, 0);
    NSBezierPath *bezierPath = [NSBezierPath bezierPathWithRoundedRect:knobRect xRadius:3 yRadius:3];
    [[NSColor redColor] set];
    [bezierPath fill];
}
@end

经过上述步骤,项目中使用Scroller

tableContainerView.verticalScroller = [[CustomScroller alloc] init];

最终颜色是变了,但是,滚动条不消失。

最终引用RFOverlayScrollView实现,但是它这个不能修改颜色,因此将上述- (void)drawKnob加入RFOverlayScroller类中即可实现修改滚动条颜色功能。细节如颜色、圆角、宽度等可根据个人需要调整,总体思路就是这样

以下是我想提交到Stack Overflow网站的回答,可惜由于以前回答不认真,账号被封,提交不了,索性提交给咱们CSDN用吧。


I need to set scroller color with red, I achieved it by follow:

  • write a subclass of NSScroller
  • override drawKnob
-(void)drawKnob {
[super drawKnob];

NSRect knobRect = NSInsetRect([self rectForPart:NSScrollerKnob], 3, 0);
NSBezierPath *bezierPath = [NSBezierPath bezierPathWithRoundedRect:knobRect xRadius:3 yRadius:3];
[[NSColor redColor] set];
[bezierPath fill];
}

But I found scroller will never disappear, finally I used RFOverlayScrollView and add these code to class of RFOverlayScroller resolved it finally, hope it is helpful for you!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jarlen John

谢谢你给我一杯咖啡的温暖

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值