更改 NSButton 突出显示的背景颜色

2023-12-24

我有一个 NSButton,我希望在突出显示时和不突出显示时具有不同的背景颜色(不突出显示时透明,如果这有什么区别)。

目前,我有以下代码

[view setWantsLayer:YES];

NSButton* button = [[NSButton alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
[button setBordered:FALSE];
[(NSButtonCell*)[button cell] setHighlightsBy:NSChangeBackgroundCellMask];

[view addSubview:button];

单击时,这会将背景更改为默认窗口背景颜色。如果我删除NSChangeBackgroundCellMask背景消失了。

有没有一种简单的方法可以为背景设置不同的颜色,或者这是否需要我对 NSButton 进行子类化?


最后我通过子类化解决了这个问题NSButtonCell并覆盖

- (void) highlight:(BOOL)flag withFrame:(NSRect)cellFrame inView:(NSView*)controlView

做出我想要的改变(改变controlView.layer.backgroundColor基于flag)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更改 NSButton 突出显示的背景颜色 的相关文章

随机推荐

  • 使用 mysql 和 php 将用户名从会话记录到表中

    我有一个用 mysql 和 php 开发的数据库系统 还有一个登录系统 我使用会话 但是当用户添加一条记录时 我希望它也记录添加它的用户 我认为会话将 允许我这样做但我不知道如何从会话中检索用户名并将其添加到表中 简单插入的示例 INSER
  • 访问模板中的vue环境变量

    我想从vue单文件组件的模板访问我的环境变量 但是 执行以下操作 img alt 给我错误 Property or method process is not defined on the instance but referenced d
  • 归并排序时间和空间复杂度

    我们以合并排序的实现为例 void mergesort Item a int l int r if r lt l return int m r l 2 mergesort a l m 1 mergesort a m 1 r 2 merge
  • “打印”和“返回”之间有什么正式区别? [复制]

    这个问题在这里已经有答案了 假设我定义了一个简单的函数 它将显示传递给它的整数 def funct1 param1 print param1 return param1 输出将是相同的 但是我知道当return语句在函数中使用 输出可以再次
  • WebView 代码在 Android 4.4.2 (API 19) 模拟器上生成 Uncaught TypeError 和 Uncaught ReferenceError 错误

    我的代码在 Android 4 4 2 KitKat API 19 模拟器上运行时遇到问题 当我在 Android 4 3 API 18 模拟器上模拟我的项目时 它可以正常工作并使用 MathJax 创建数学表达式 模拟器图像 https
  • Python 中的参数依赖性 - 无法使其工作

    我正在尝试向我的脚本添加参数依赖项 这个想法是 clone参数需要非空 gituser 细读后这个例子 https stackoverflow com questions 21879657 argparse argument depende
  • 路由音频输入以从 iPhone 上的 TOP 麦克风接收

    我正在编写一个小应用程序来录制多个曲目并相互播放 我正在使用 PlaybackAndRecord 模式 并将输出路由到主扬声器 问题是底部麦克风仍然用于输入 所以现在当我录制时 我会在新轨道上得到其他轨道的输出 声音非常大 这是我到目前为止
  • 在 Python 中解析 PAC 文件而不使用 C 模块

    我处于无法使用 pacparser 库的困境 我希望有人有一个纯 python 解决方案 没有 C c 模块 我有一个返回多个代理的 PAC 文件 function FindProxyForURL url host if isPlainHo
  • Jetty注解超时原因

    我正在使用 Maven jetty 插件运行我的 Web 应用程序 但启动一段时间后 出现错误 INFO Web defaults org eclipse jetty webapp webdefault xml INFO Web overr
  • 仅使用 Android 中的电子邮件客户端应用程序发送电子邮件

    我想实现一个发送电子邮件的选项 现在我可以发送电子邮件 但问题是 Android 显示了许多可以发送的应用程序 例如蓝牙 facebook 消息等 但这些不是必需的 我需要避免这种情况并仅显示电子邮件客户端应用程序 Intent inten
  • 在 shell 脚本之间导出变量

    我有两个独立运行的脚本 第一个假设脚本 A 计算一些值 我想从其他名为 B 的脚本中回显这些值 这些脚本不会互相调用 我使用了导出关键字 但没有用 我怎样才能做到这一点 如果我理解了这个要求 那么两个脚本就不能简单地在同一个子 shell
  • rsync .git 目录

    这个问题可能是因为我对 gits 和 git 存储库的一般作用缺乏了解 但是 我可以将目录与我创建的内容同步吗git init机器之间 我的笔记本电脑上有一个存储库 将其从那里获取的唯一方法是 scp rsync 到远程主机 我可以从中再次
  • 在 C 中将字母转换为数字

    我正在尝试编写一个将字母转换为数字的代码 例如 一个 gt 0 B gt 1 C gt 2 等等 我正在考虑编写 26 个 if 语句 我想知道是否有更好的方法来做到这一点 谢谢你 这是我觉得比以前更好的方式switch方法 但符合标准 不
  • 函数无法处理较大的 n 值(接近 400)

    这是来自一个统计项目 我定义了下面的函数 但是当 n 接近 400 时 第二个方法很慢 第一个方法很好 这里有些人帮助了我在这个问题中 https stackoverflow com questions 32608913 how to op
  • 使用libxml2 sax解析器时如何从xml中获取属性的名称和值?

    我一直试图通过使用 libxml2 解析 iPhone 应用程序上的 api 来检测一些通用 xml 中属性的名称和值对 对于我的项目来说 解析速度非常重要 所以我决定使用 libxml2 本身而不是使用 NSXMLParser 现在 参考
  • ubuntu 中的 libc 还是 glibc?

    我对这些库有点困惑 我现在在 Ubuntu 上工作 我使用 g 5 我看到我的应用程序链接在 libc so 中 它是Ubuntu的C标准库的实现吗 和glibc有区别吗 ldd application exe libc so 6 gt l
  • 分离实体和延迟加载字段 - 工作线程

    我有以下问题 A 类从数据库中检索一些对象 这些对象本身就是可运行的 并在线程池中运行它们 它们需要在运行时更新其状态 它们更新在其上注册的侦听器 问题是它们在实体处于分离状态时访问延迟加载的字段 因为事务仅覆盖主线程 所以当然有例外 调用
  • 如何使用Serde解析多种不同类型的YAML文件? [复制]

    这个问题在这里已经有答案了 我正在尝试解析这个 YAML 文件 application build something container name another thing environment ONE ENV fake SEC EN
  • 如何加速rbind?

    我应该从 MS SQL 服务器下载一个表 行数大于600万 服务器无法一次返回全部数据 因此 我编写了一次下载 10 000 行的代码 并且 它在循环中绑定行 假使 假设getData 函数一次返回一个包含 10000 行的数据框 伪代码
  • 更改 NSButton 突出显示的背景颜色

    我有一个 NSButton 我希望在突出显示时和不突出显示时具有不同的背景颜色 不突出显示时透明 如果这有什么区别 目前 我有以下代码 view setWantsLayer YES NSButton button NSButton allo