1.9 NSSegmentControl
NSSegmentControl是OS X中提供的一个用以在多个按钮选项栏中单选的控件,与Radio不同的是,NSSegmentControl是横行展示的,可用来切换NSViewController或NSView等视图类的。
1.9.1 基本声明
var mView: NSView!
var segmentControl: NSSegmentedControl!
override func loadView() {
self.view = NSView(frame: NSRect(x: 0, y: 0, width: 500, height: 300))
}
private func initView(){
mView = NSView(frame: NSRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height))
segmentControl = NSSegmentedControl(labels: ["C","Java","Swift"], trackingMode: NSSegmentedControl.SwitchTracking.selectOne, target: self, action: #selector(segmentControlListener))
segmentControl.setFrameOrigin(NSPoint(x: (self.view.frame.width / 2) - (self.segmentControl.frame.size.width / 2), y: self.view.frame.height - 30))
segmentControl.segmentStyle = .roundRect
self.view.addSubview(segmentControl)
}
@objc func segmentControlListener(){
print("------> SELECT AT:\(segmentControl.selectedSegment)")
}
说明:NSSegmentControl类的声明和其它控件略有不同,该类的位置是可变的,而size属性则是固定的。因此我们只需调用setFrameOrigin() 属性设置其位置即可。默认效果如下:
当然该空间的style效果很多,上述代码展示的效果如下:
1.9.2 方法或属性
设置指定段的启用状态:
func setEnabled(Bool, forSegment: Int)
返回一个布尔值,指示是否启用了指定的段:
func isEnabled(forSegment: Int) -> Bool
设置指定段的宽度:
func setWidth(CGFloat, forSegment: Int)
返回指定段的宽度:
func width(forSegment: Int) -> CGFloat
返回一个布尔值,指示是否选择了指定的段:
func isSelected(forSegment: Int) -> Bool
设置指定段的图像:
func setImage(NSImage?, forSegment: Int)
设置用于显示指定段图像的缩放模式:
func setImageScaling(NSImageScaling, forSegment: Int)
一个布尔值,指示是否为控件启用弹簧加载:
var isSpringLoaded: Bool