NSSlider继承于:NSControl。和UISlider用法有些类似.
基本使用
let slider = NSSlider(frame: CGRect(x: 20, y: 100, width: 200, height: 50))
slider.sliderType = NSSlider.SliderType.linear // slider 样式 圆形/条形
slider.minValue = 0 // 最小值
slider.maxValue = 100 // 最大值
slider.isVertical = false // 垂直显示,SliderType.linear 有效
slider.numberOfTickMarks = 10 //设置 numberOfTickMarks > 0 即可显示刻度。否则自动隐藏刻度
slider.allowsTickMarkValuesOnly = true //滑动时只能停留在刻度上
slider.tickMarkPosition = NSSlider.TickMarkPosition.below //刻度位置
//添加监听方法
slider.target = self
slider.action = #selector(sliderValueChanged(slider:))
view.addSubview(slider)
样式
@available(OSX 10.10, *)
open var sliderType: NSSlider.SliderType
public enum SliderType : UInt {
case linear //条形
case circular //圆形
}

刻度显示的位置 tickMarkPosition
对于SliderType.circular,都在圆圈的外面,设置无效。
public enum TickMarkPosition : UInt {
case below //刻度在下
case above //刻度在上
public static var leading: NSSlider.TickMarkPosition { get }//isVertial时,刻度在左
public static var trailing: NSSlider.TickMarkPosition { get }//isVertial时,刻度在右
}
监听方法
@objc func sliderValueChanged(slider: NSSlider) {
print(slider.floatValue)//当前值刻度floatValue(父类NSControl中的属性)
}
自定义颜色
在Mac 开发中修改多数控件的样式都需要子类化控件并设置自定义的cell,这里不详解了。
网友评论