MacOS - NSSlider 音量控制功能

淺談MacOS開(kāi)發(fā)-NSSlider,它和iOS的UISlider相比,差別真的是太大了。

首先我們簡(jiǎn)單了解下 iOS UISlider 的API文檔截圖??聪挛臋n說(shuō)明,屬性很多,還有部分沒(méi)有截出來(lái)??梢哉f(shuō),關(guān)于UISlider的99%的設(shè)計(jì)功能均能實(shí)現(xiàn)。

iOS-UISlider

其次我們?cè)賮?lái)了解下 MacOS NSSlider 的API文檔截圖??聪挛臋n說(shuō)明。寶寶想哭??。

MacOS-NSSlider

我們的功能是:開(kāi)發(fā)類似愛(ài)奇藝的音量控制功能??词呛?jiǎn)單的功能,浪費(fèi)我3個(gè)小時(shí)。系統(tǒng)的NSSlider不能滿足開(kāi)發(fā)需求。只能自己封裝了。下面是原始代碼:

第一步:創(chuàng)建自己的封裝類: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];

? ? // 設(shè)置線的填充色

? ? [NSColor.greenColor setFill];

? ? [bezierPath fill];

}

@end

最后實(shí)現(xiàn)的功能截圖如下:


MacOS-音量調(diào)整
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容