学习Mac开发第五弹 学习NSSlider

学习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

    go to custom slider

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值