按钮 NSButton是NSControl的子类,是最常用的控件之一。
NSButton的继承关系是:NSButton -> NSControl -> NSView -> NSResponder -> NSObject,是一个很长的继承链了。
虽然都是Button,但是Mac系统是没有触摸事件的。所以和iOS中的UIButton差别很大.
1.UIButton 事件类型很多, 而NSButton没有设置事件类型的方法
2.UIButton 样式单一, 而NSButton可以选择很多样式(radiobutton,checkbutton等..)
简单使用
let btn = NSButton(frame: CGRect(x: 200, y: 20, width: 100, height: 40))
btn.title = "点击" //标题
btn.alignment = NSTextAlignment.center //按钮上文字的对齐方式
btn.font = NSFont(name: "Marker Felt", size: 16) // 字体
btn.setButtonType(NSButton.ButtonType.onOff) //按钮功能样式: raido, 开关 等等
btn.bezelStyle = NSButton.BezelStyle.roundRect //按钮的边框样式
/** ButtonType.toggle 时 */
btn.alternateTitle = "开启" //设置开启时文字
btn.alternateImage = NSImage(named: "abc")//设置开启时图片
btn.isBordered = false //是否显示边框
btn.isTransparent = false // 是否透明
btn.isHighlighted = true //按钮是否高亮
/** 按钮快捷键 */
btn.keyEquivalent = "I" //设置快捷键
btn.keyEquivalentModifierMask = NSEvent.ModifierFlags.shift //设置快捷键掩码
// btn.attributedTitle = attibuteTitle //设置富文本标题
//给按钮添加事件
btn.target = self
btn.action = #selector(buttonClicked)
view.addSubview(btn)
//在OSX 10.12 后 NSButton 可以通过一些 convenience init 方法创建
button = NSButton(title: "确定", target: self, action: #selector(buttonClicked))
button.frame = CGRect(x: 20, y: 20, width: 100, height: 40)
view.addSubview(button)
NSButton 有多种ButtonType, BezelStyle这里也不详细说明,实践出真知。
NSButtonCell
NSButtonCell的继承关系是:NSButtonCell -> NSCell -> NSObject。
比NSButton少了两层的继承,所以Cell的性能比Control高很多了。
Cell 和 Control
NSCell 是作为UI层展示.
NSButton和NSButtonCell同时存在,设置NSButton的属性,也就是设置NSButtonCell的属性(某些)。
网友评论