美文网首页
MacOS - NSSlider 音量控制功能

MacOS - NSSlider 音量控制功能

作者: 王科伟 | 来源:发表于2018-07-24 18:55 被阅读144次

    浅谈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-音量调整

    相关文章

      网友评论

          本文标题:MacOS - NSSlider 音量控制功能

          本文链接:https://www.haomeiwen.com/subject/btpymftx.html