【Swift】 NSButton的用法和示例
NSButton是macOS开发中常用的控件,用于创建按钮。它有许多用法和需要注意的事项,下面介绍其中的一些。
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图层来创建自定义形状的按钮。可以使用CALayer的cornerRadius属性设置圆角,或者使用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
- 在设置按钮快捷键时,需要注意不要与其他快捷键冲突,否则会导致快捷键无法正常使用
相关文章:

【Swift】 NSButton的用法和示例
NSButton是macOS开发中常用的控件,用于创建按钮。它有许多用法和需要注意的事项,下面介绍其中的一些。 1. 创建按钮:使用init(frame:)或init(title:action:)初始化按钮 let button NSButton(frame: NSRect(x: 0, y: 0, width: 100, height…...

2023什么蓝牙耳机好?经销商盘点新手必入蓝牙耳机品牌
蓝牙耳机是除手机外我们使用频率最高的数码产品,我做蓝牙耳机经销商五年来,对各个品牌都有深入了解。近期看到很多新手们咨询什么蓝牙耳机好,我给大家盘点一下新手必看的五大蓝牙耳机品牌。 1.JEET Air 2蓝牙耳机 推荐理由:专为舒…...

MySQL基础(二十)MySQL的数据目录
1. MySQL8的主要目录结构 find / -name mysql1.1 数据库文件的存放路径 show variables like datadir; # /var/lib/mysql/1.2 相关命令目录 相关命令目录:/usr/bin 和/usr/sbin。 1.3 配置文件目录 配置文件目录:/usr/share/mysql-8.0(命…...

低代码行业未来如何?大家都真的看好低代码开发吗?
低代码行业未来如何?大家都真的看好低代码开发吗? 是否一定需要开发人员?低代码和无代码平台会取代传统编程吗?低代码/无代码真的是未来吗? 无疑是需要且重要的。今天就来解答为什么低/零代码工具越来越受欢迎…...

mac m2芯片 安装 brew 和cocoapods
Homebrew的安装 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 这里可能会失败,如 git clone 时候报错 error: RPC failed; curl 92 HTTP/2 stream 5 was not closed cleanly before end of the underlyi…...

SingleR --细胞注释
文章目录 briefExample使用内置的 references使用其他注释好的数据集作为 reference singleR还提供了注释诊断的方法 brief Example The celldex package provides access to several reference datasets (mostly derived from bulk RNA-seq or microarray data)。 The Human…...

【结构与算法】—— 游戏概率常用算法整理 | 游戏中的常见概率设计分析
📢博客主页:肩匣与橘📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢本文由肩匣与橘编写,首发于CSDN🙉📢生活依旧是美好而又温柔的,你也是✨ …...

WebRTC系列-适配GPUImage及其他视频处理改造
文章目录 1. GPUImage 的一些改动1.1 GPUImage数据输入源1.1 GPUImage数据输出源2.WebRTC摄像头采集类改造GPUImage使用OpenGL提供了很多的图像处理算法,包括最常用的美颜处理、水印等功能,这些基本的功能如何添加到WebRTC中,本文以美颜为例子,叙述主要的改造流程;同时也适…...

day43—选择题
文章目录 1.A,B两台机器都正常工作,B机器未监听任何端口.如果A机器向B机器80端口发送SYN包,会收到何种类型的回包(D)2.下列哪个IP地址可以分配给一台计算机(D)3.以下哪个ip不和10.11.12.91/28处于同一个子网(D…...

<<和>>操作符、取地址重载、const关键字
文章目录 自定义类型<<和>>重载const关键字取地址重载(类的默认构造函数) 自定义类型<<和>>重载 在内置类型中,<<和>>可以自动识别 在自定义类型冲,运算符重载,<<和>&…...

数学模型,如何计算概率?
既然是数学模型,那应该如何计算呢? 最简单的方法,当然就是用统计学的方法去计算了,简单说来,就是靠输入的上下文进行统计,计算出后续词语的概率,比如「你吃了晚饭了吗」,「你吃了」后面按照概率,名词如「饭」或「晚饭」等概率更高,而不太可能是动词,如「睡」「睡觉…...

【Ehcache技术专题】「入门到精通」带你一起从零基础进行分析和开发Ehcache框架的实战指南(Spring整合ehcache)
带你一起从零基础进行分析和开发Ehcache框架的实战指南(Spring整合ehcache) 回顾一下Ehcache主要的特性 Spring框架所支持的第三方缓存Spring Cache的实现方式Spring Cache基本准备工作定义Ehcache配置文件启用Spring-CacheXML风格的xml代码 JavaConfig注…...

合肥市2023年度高校毕业生“双千培养工程”培训项目学员招募公告
为贯彻落实人社部实施促进高校毕业生等青年就业创业推进计划要求,提升高校毕业生就业技能,拟开展高校毕业生“双千培养工程”培训项目。根据工作计划安排,现面向高校和社会招募学员参加培训,培训方向为大数据应用、PythonAI人工智…...

重写Properties类,实现对properties文件的有序读写,数据追加,解决中文乱码
前言 *.properties文件,是 Java 支持的一种配置文件类型,并且 Java 提供了 properties 类来读取 properties 文件中的信息。文件中以键值对 "键值"的形式,存储工程中会多次重复使用的配置信息,通过“Properties”类来读…...

态势感知与信质、信量
未来的新智能是人机环境系统智能,而人机融合的态势感知是其关键,简单地说,态势感知(situation awareness)就是智能体在“一定时间和空间环境中的元素的感知,对它们的含义的理解,并对他们稍后状态…...

20230508----重返学习-call()与bind()重写-JS中数据类型检测汇总-装箱与拆箱-类的多种继承方案
day-065-sixty-five-20230508-call()与bind()重写-JS中数据类型检测汇总-装箱与拆箱-类的多种继承方案 call()与bind()重写 call()重写 call()的作用例子 let obj {name: 珠峰培训 } const fn function fn(x, y, ev) {console.log(this, x, y, ev)return x y } let res f…...

Node.js对ES6 及更高版本的支持
目录 1、简介 2、默认情况下什么特性随着 Node.js 一起发布? 3、有哪些特性在开发中? 4、移除这个标记(--harmony)吗 5、Node.js 对应 V8 引擎 1、简介 Node.js 是针对 V8 引擎构建的。通过与此引擎的最新版本保持同步&…...

【华为OD机试2023】工作安排 100% C++ Java Python
【华为OD机试2023】工作安排 100% C++ Java Python 前言 如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议! 本文解法非最优解(即非性能最优),不能保证通过率。 Tips1:机试为ACM 模式 你的代码需要处理输入输出,input/cin接收…...

面试题Spring - 关于Spring的25个经典问题和答案
文章目录 1 什么是Spring框架?Spring框架有哪些主要模块?2 使用Spring框架能带来哪些好处?3 什么是控制反转(IOC)?什么是依赖注入?4 请解释下Spring框架中的IoC?5 BeanFactory和ApplicationContext有什么区…...

C++学习day--10 条件判断、分支
1、if语句 if 语句的三种形态 形态1:如果。。。那么。。。 #include <iostream> using namespace std; int main( void ) { int salary; cout << " 你月薪多少 ?" ; cin >> salary; if (salary < 20000) { cout <&…...

和月薪5W的聊过后,才发现自己一直在打杂···
前几天和一个朋友聊面试,他说上个月同时拿到了腾讯和阿里的offer,最后选择了阿里。 我了解了下他的面试过程,就一点,不管是阿里还是腾讯的面试,这个级别的程序员,都会考察项目管理能力,并且权重…...

SSM框架学习-AOP通知类型
在AOP中,通知(Advice)是对切点进行操作的方法,用于实现切面定义的具体逻辑。Spring框架支持五种类型的通知: 1. 前置通知(Before advice) 在连接点执行前,执行通知 Before("**…...

微信小程序原生开发功能合集十四:登录健权及注册功能实现
本章实现微信自动登录及注册修改功能,包括匿名账号生成、权限自动检测、注册界面及注册流程的实现。 另外还提供小程序开发基础知识讲解课程,包括小程序开发基础知识、组件封装、常用接口组件使用及常用功能实现等内容,具体如下: 1. CSDN课程: https://edu.csdn…...

【Java零基础入门篇】第 ⑤ 期 - 抽象类和接口(二)
博主:命运之光 专栏:Java零基础入门 学习目标 1.了解什么是抽象类,什么是接口; 2.掌握抽象类和接口的定义方法; 3.理解接口和抽象类的使用场景; 4.掌握多态的含义和用法; 5.掌握内部类的定义方法…...

Halcon 集合运算(差集difference、交集intersection、并集union2、打散connection与 合集 union1)
文章目录 1 差集difference2. 交集intersection3. 并集union24 打散connection与 合集 union1 (二者互为反义词)4.1 打散connection与4.2 合集 union1 (注意与交集的区别)5 示例原图1 差集difference difference (Operator) Name difference — Calculate the difference …...

Allegro约束规则设计
首先是物理规则。 然后是间距规则。 如果有些特殊要求,还需要设计电气规则。 原则上,把规则设计好,然后把规则赋值给网络。 物理规则。PCS。 对于名字为DEFAULT的PCS,这是最基础的整板默认规则。 没有特殊要求的网络,…...

PyQt5桌面应用开发(11):摸鱼也要讲基本法之桌面精灵
本文目录 PyQt5桌面应用系列鼠标不要钱,手腕还不要钱吗?PyQt5源程序python文件资源定义界面定义文件 技术要素资源文件StyleSheetsQMainWindow设置窗体几何 结论 PyQt5桌面应用系列 PyQt5桌面应用开发(1):需求分析 PyQ…...

Talk预告 | 大连理工大学IIAU Lab在读博士生严彬:走向通用实例感知
本期为TechBeat人工智能社区第495期线上Talk! 北京时间5月10日(周三)20:00,大连理工大学IIAU Lab在读博士生—严彬的Talk将准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “走向通用实例感知”,届时将介绍和探讨通用实…...

2023-05-04 LeetCode每日一题(摘水果)
2023-05-04每日一题 一、题目编号 2106. 摘水果二、题目链接 点击跳转到题目位置 三、题目描述 在一个无限的 x 坐标轴上,有许多水果分布在其中某些位置。给你一个二维整数数组 fruits ,其中 fruits[i] [positioni, amounti] 表示共有 amounti 个水…...

[工具]Pytorch-lightning的使用
Pytorch-lightning的使用 Pytorch-lightning介绍Pytorch-lightning与Pytorch的区别Pytorch-lightning框架的优势Pytorch-lightning框架 重要资源 Pytorch-lightning介绍 这里介绍Pytorch_lighting框架. Pytorch-lightning与Pytorch的区别 Pytorch-lightning可以简单的看作是…...