NSButtonmacOS开发常用控件用于创建按钮。它有许多用法需要注意事项,下面介绍其中的一些。

1. 创建按钮使用init(frame:)或init(title:action:)初始化按钮

let button = NSButton(frame: NSRect(x: 0, y: 0, width: 100, height: 40))
let button = NSButton(title: "Click me", target: self, action: #selector(buttonClicked(_:)))

2. 设置按钮类型使用setButtonType(_:)方法设置按钮类型例如圆形、方形等

button.setButtonType(.pushOnPushOff) // 圆形开关按钮
button.setButtonType(.momentaryChange) // 短暂变化按钮

3. 设置标题使用setTitle(_:), setAttributedTitle(_:)或setTitleWithMnemonic(_:)方法设置按钮标题

button.setTitle("OK")
let attributes: [NSAttributedString.Key: Any] = [.foregroundColor: NSColor.red]
button.setAttributedTitle(NSAttributedString(string: "Cancel", attributes: attributes))

4. 禁用按钮:使用setEnabled(_:)方法禁用按钮,禁用后按钮会显示灰色

button.isEnabled = false

5. 按钮动作使用setAction(_:)和setTarget(_:)方法设置按钮点击执行方法对象

button.target = self
button.action = #selector(buttonClicked(_:))

@objc func buttonClicked(_ sender: NSButton) {
    print("Button clicked!")
}

6. 设置图片:使用setImage(_:)和setAlternateImage(_:)方法设置按钮的图像和替代图像

button.image = NSImage(named: "Icon")
button.alternateImage = NSImage(named: "Icon_selected")

7. 设置按钮状态:使用setState(_:)方法设置按钮的状态可以是正常、选中混合状态

button.state = .on // 充当开关按钮使用,设置按钮为选中状态

8. 设置键盘快捷键:使用setKeyEquivalent(_:), setKeyEquivalentModifierMask(_:)和performKeyEquivalent(_:)方法来设置按钮的键盘快捷键

button.keyEquivalent = "r" // 回车键
button.keyEquivalentModifierMask = [.command, .shift] // 快捷键修饰符,同时按下 Command 和 Shift触发

NSButton的背景颜色字体大小可以通过设置按钮的cell属性实现。具体操作方法如下

9. 设置背景颜色

要设置NSButton的背景颜色需要创建一个NSButtonCell对象,并设置其backgroundColor属性然后将该NSButtonCell对象赋值给NSButton的cell属性即可

let button = NSButton(frame: NSRect(x: 0, y: 0, width: 100, height: 40))
let cell = button.cell as! NSButtonCell
cell.backgroundColor = .red

10. 设置字体大小

要设置NSButton的字体大小,同样需要创建一个NSButtonCell对象,并设置其font属性然后将该NSButtonCell对象赋值给NSButton的cell属性即可

let button = NSButton(frame: NSRect(x: 0, y: 0, width: 100, height: 40))
let cell = button.cell as! NSButtonCell
cell.font = NSFont.systemFont(ofSize: 20)

11. 更改形状

        (1)子类化NSButton并实现自定义形状

          创建一个自定义的NSButton子类,并在其中覆盖draw(_ dirtyRect: NSRect)方法以绘制自定义形状例如,一个绘制红色圆形自定义NSButton子类CircleButton:

class CircleButton: NSButton {
    override func draw(_ dirtyRect: NSRect) {
        let path = NSBezierPath(ovalIn: bounds)
        NSColor.red.setFill()
        path.fill()
    }
}

        (2) 使用Core Animation图层自定义形状

        使用Core Animation图层创建自定义形状的按钮。可以使用CALayercornerRadius属性设置圆角或者使用mask属性指定一个alpha通道图像裁剪按钮的形状。例如创建一个椭圆形的按钮:

let button = NSButton(frame: NSRect(x: 0, y: 0, width: 100, height: 50))
button.wantsLayer = true
button.layer?.cornerRadius = 25
button.layer?.backgroundColor = NSColor.red.cgColor

        在方法2中,我们将NSButton的wantsLayer属性设置为true,这将启用Core Animation图层然后我们设置按钮图层cornerRadius属性为25,这将使按钮显示椭圆形。最后,我们设置按钮图层backgroundColor属性为红色,以使其显示为红色椭圆形。        

12. 需要注意事项

– 当使用setButtonType(.pushOnPushOff)设置按钮类型时,需要使用setPeriodicDelay(_:interval:)方法设置按钮重复点击延迟重复点击间隔
– 如果使用init(title:action:)方法初始化按钮并指定动作方法,则动作方法必须在目标对象实现,并且接受一个参数sender:NSButton
– 在设置按钮快捷键时,需要注意不要与其他快捷键冲突,否则会导致快捷键无法正常使用

原文地址:https://blog.csdn.net/m0_38103873/article/details/130572048

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_47876.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注