浅谈MacOS开发-NSSlider,它和iOS的UISlider相比,差别真的是太大了。
首先我们简单了解下 iOS UISlider 的API文档截图。看下文档说明,属性很多,还有部分没有截出来。可以说,关于UISlider的99%的设计功能均能实现。
iOS-UISlider其次我们再来了解下 MacOS NSSlider 的API文档截图。看下文档说明。宝宝想哭😢。
MacOS-NSSlider我们的功能是:开发类似爱奇艺的音量控制功能。看是简单的功能,浪费我3个小时。系统的NSSlider不能满足开发需求。只能自己封装了。下面是原始代码:
第一步:创建自己的封装类:RSSliderCells
.h文件:
#import@interface RSSliderCells : NSSliderCell
@end
第二部:重写drawBarInside方法:
.m文件:
#import "RSSliderCells.h"
@implementation RSSliderCells
- (void)drawBarInside:(NSRect)rect flipped:(BOOL)flipped {
[super drawBarInside:rect flipped:flipped];
rect.size.height = 110;
// Bar radius
CGFloat barRadius = 2.5;
CGFloat value = ([self doubleValue] - [self minValue]) / ([self maxValue] - [self minValue]);
CGFloat finalWidth = value * ([[self controlView] frame].size.height - 4);
NSRect leftRect = rect;
leftRect.size.height = finalWidth;
leftRect.origin.y = 110 - (finalWidth);
NSBezierPath* bg = [NSBezierPath bezierPathWithRoundedRect: rect xRadius: barRadius yRadius: barRadius];
[NSColor.lightGrayColor setFill];
[bg fill];
NSBezierPath *bezierPath = [NSBezierPath bezierPathWithRoundedRect:leftRect xRadius:barRadius yRadius:barRadius];
// 设置线的填充色
[NSColor.greenColor setFill];
[bezierPath fill];
}
@end
最后实现的功能截图如下:
MacOS-音量调整
网友评论