学习Mac开发第五弹 学习NSSlider
-
认识NSSlider
层级结构
Inherits From NSControl NSView NSResponder NSObject
-
获取NSSlider滑动后的值
拖拽到.m文件一个Action,可以获取浮点型和整数型的值
- (IBAction)sliderAction:(id)sender { NSSlider *slider = (NSSlider *)sender; //self.sliderValue.stringValue = [NSString stringWithFormat:@"%f",slider.floatValue]; self.sliderValue.stringValue = [NSString stringWithFormat:@"%ld",(long)slider.integerValue]; }
效果如图
-
修改背景颜色
#import "MyCustomSlider.h" @implementation MyCustomSlider - (void)drawBarInside:(NSRect)rect flipped:(BOOL)flipped { // [super drawBarInside:rect flipped:flipped]; rect.size.height = 5.0; // Bar radius CGFloat barRadius = 2.5; // Knob position depending on control min/max value and current control value. CGFloat value = ([self doubleValue] - [self minValue]) / ([self maxValue] - [self minValue]); // Final Left Part Width CGFloat finalWidth = value * ([[self controlView] frame].size.width - 8); // Left Part Rect NSRect leftRect = rect; leftRect.size.width = finalWidth; NSLog(@"- Current Rect:%@ \n- Value:%f \n- Final Width:%f", NSStringFromRect(rect), value, finalWidth); // Draw Left Part NSBezierPath* bg = [NSBezierPath bezierPathWithRoundedRect: rect xRadius: barRadius yRadius: barRadius]; [NSColor.orangeColor setFill]; [bg fill]; // Draw Right Part NSBezierPath* active = [NSBezierPath bezierPathWithRoundedRect: leftRect xRadius: barRadius yRadius: barRadius]; [NSColor.purpleColor setFill]; [active fill]; } @end
-
自定义Slider