单击时如何不突出显示 NSButton 的模板图像?

2023-11-25

我在 NSTableView 的每一行都有 NSButtons。

按钮图像在 IB 中设置,并且带 Alpha 通道的黑色图标:

enter image description here

窗口设置为暗模式:

window?.appearance = NSAppearance(named: NSAppearanceNameVibrantDark)

并进入正常模式:

window?.appearance = nil

目标是当窗口为白色时按钮应为黑色,当窗口为暗时按钮应为白色,单击时不改变。

在深色模式下,为了实现颜色变化,我在 NSTableCellView 子类中将按钮的图像“template”属性设置为 true:

public override func awakeFromNib() {
    if darkMode {
        button.image?.isTemplate = true
    } else {
        button.image?.isTemplate = false
    }
} 

IB 中的按钮是这样制作的:

enter image description here

这在 macOS 10.12 Sierra 中效果很好:当窗口为白色时,单击黑色按钮不会改变其外观,这是完美的。

但是当窗口变暗时,单击白色按钮会使窗口变黑,这在我的情况下是不可接受的(*)。此外,模板图像在 macOS 10.11 El Capitan 中不起作用。

Ok:

enter image description here

点击了,不行:

enter image description here

再次单击变黑的按钮使其再次变白......

我的问题是:如何强制 NSButton 在单击时不突出显示模板图像?

我认为这是因为“瞬时更改”类型,但使用其他“瞬时”类型不会改变任何内容,而且我也无法将类型设置为“自定义”(IB 拒绝)。

请注意,与 macOS 10.12 相比,这些模板图像在 macOS 10.11 中的行为有所不同。在 Sierra 中无缝运行的设置组合在 El Capitan 中不起作用。这也是我设置赏金的原因:我需要一个适用于两个系统的解决方案。如果没有解决方案并且您知道原因,那么您的解释也将是一个可以接受的答案。

(*) 在 Sierra 上可以使用模板图像工作的解决方法,方法是使用use button.cell?.setCellAttribute(.cellLightsByContents, to: 0)阻止按钮在单击时明确改变颜色(尽管仍然有短暂的闪烁)。但在 El Capitan 中,该按钮在深色模式下为黑色,因此这不适用。


None

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

单击时如何不突出显示 NSButton 的模板图像? 的相关文章

  • Docker 容器 - 如何配置使其在 vagrant 中运行时获得可行的 IP 地址?

    Docker www docker io 看起来棒极了 然而 安装 VirtualBox 后 Vagrant 最后是 Mac 上的 Docker 我发现无法从另一台计算机 或从 Mac 上的终端会话 访问 Docker 容器中运行的服务 我
  • 为每行 NSTableView 文本着色

    我有一个 NSTableView 它显示我拥有的对象数组 对于每个对象 行 我想根据在每个对象上运行的函数的结果来更改显示的文本的颜色 因此 例如表中存在于另一个列表 或其他一些要求 中的所有对象 我想以绿色文本显示它们 不存在的对象以红色
  • 如果加载 dylib,垃圾收集工作队列会崩溃

    我们正在将应用程序从 10 6 移植到 10 8 我正在查看我们在应用程序中加载的 dylib 我面临着非常不寻常的崩溃垃圾收集工作队列并附有以下消息 malloc Thread suspend unable to suspend a th
  • UNIX/MacOS 上静态文件的“临时 Web 服务器”?

    是否有一个像小型网络服务器这样的东西 我可以从命令行调用它 只从本地文件系统获取文件并通过特定端口上的 HTTP 为它们提供服务 我希望能够做这样的事情 cd Sites mysite serve 10 0 1 1 8080 这应该会启动一
  • xsel -o 对于 OS X 等效项

    是否有一个等效的解决方案可以在 OS X 中抓取选定的文本 就像适用于 Linux 的 xsel o 一样 只需要当前的选择 这样我就可以在 shell 脚本中使用文本 干杯 埃里克 你也许可以安装xsel在 MacOS 上 更新 根据 A
  • 为什么 struct tm 中的 tm_year 成员相对于 1900 而不是 macOS 上 C 中的 1970?

    当我遇到这个问题时 我正在尝试专家 C 编程中的示例 我的程序基本上做一件事 使用标准gmtime运行一下 看看自 1970 年以来已经过去了多少年 这是我的程序 include
  • 如何在 swiftUI (macOS) 中检测按键按下和释放

    除了标题之外没什么可说的 我希望能够在按下按键和释放按键时 在 macOS 上 在 swiftUI 视图中执行操作 在 swiftUI 中是否有任何好的方法可以做到这一点 如果没有 有什么解决方法吗 不幸的是 键盘事件处理是其中一个令人痛苦
  • .profile 无法从 Mac 终端运行

    我有一个 profile 文件 我正在终端中读取并使用别名 但在某些时候 别名由于没有明确的原因而停止工作 其他命令仍在工作 为了快速修复 我删除了 rm 并在用户目录中重新创建了 profile 文件 我可以看到 至少在该目录中没有 ba
  • Java Swing For mac 中的 DJ Native Swing 浏览器

    我有一个用 Swing 制作的 Java 应用程序 并且使用了一个 DJ Native Swing 浏览器 当我尝试在 OS X 上使用它时 它抛出了一个NoClassDefFoundError尽管我添加了 swt jar 但始终如此 有人
  • `pyqt5'错误`元数据生成失败`

    我正在尝试安装pyqt5使用带有 M1 芯片和 Python 3 9 12 的 mac 操作系统 我怀疑M1芯片可能是原因 我收到一个错误metadata generation failed 最小工作示例 directly in the t
  • 从 python 检测 macOS 中的暗模式

    我正在编写一个 PyQt 应用程序 我必须添加一个补丁 以便在启用暗模式的 Macos 上可以读取字体 app QApplication Fix for the font colours on macos when running dark
  • 从 cocoa 编辑系统偏好设置

    有没有办法使用可可以编程方式编辑系统首选项 是否需要一些框架 我需要这样做来更改全局代理设置 另外 我的应用程序是沙盒的 有关于如何执行此操作的示例代码吗 感谢您的帮助 您正在寻找系统配置框架 但这并不容易 我认为沙盒应用程序不可能这样做
  • 在 macOS 上为 MoviePy 安装 ffmpeg 失败并出现 SSL 错误

    我正在尝试编写一个 Python 程序 在 Mac OS 10 11 16 上使用 MoviePy 将 MP4 文件转换为 GIF 我用 import moviepy editor as mp 我收到一条错误消息 说我需要打电话imagei
  • VLCJ 无法在 Mac 上运行 - 插件 libvlccore.5.dylib

    我正在尝试让 VLCJ 在 Mac 和 PC 上运行 它在 Windows 7 64 位 下运行良好 但当我尝试在 Mac 上运行它时 它崩溃了 我指向 VLC dylib 文件的正确目录 但收到 使用 libvlccore 5 dylib
  • 使用 NSError 检查错误的正确结构

    我正在编写各种例程 并尽力保持其整洁和重构 我正在创建的方法开始看起来与此代码类似 IBAction buttonPress id sender Create Document Shopping List with this documen
  • 如何在 MacBook Pro 上的 Docker 容器内运行 tkinter?

    我正在尝试运行一个使用以下命令的 python GUI 应用程序tkinter我的 MacBook Pro 上的 docker 容器内的模块 所以我安装了XQuartz https www xquartz org 并跟随本教程 https
  • iPad - 无法在框架内滚动

    我无法滚动 iPad Safari 中框架内调用的 pdf 我已经尝试过两件事 2 指滚动 使用对象 嵌入代替框架 但这是行不通的 事实上我已经尝试了很多东西 溢出 高度等等 请帮我 先感谢您 根据这篇文章http support appl
  • 当所选选项是下拉列表中已选择的选项时如何接收事件?

    动机 我想动态加载一个select使用来自 AJAX 调用的值 并允许用户select加载后列表中的第一项after它获得焦点 现在 第一项是selected项目 当您单击下拉列表并单击第一项时 什么也没有发生 我无法添加任何无效选择的占位
  • Swift 中带圆角的 NSWindow

    我想要一个圆角的窗户 但我在每个角落都有一个白点 Code let effect NSVisualEffectView frame NSRect x 0 y 0 width 0 height 0 effect blendingMode be
  • 避免“在此块中强烈捕获自身可能会导致保留周期”消息

    每次我必须在块内使用全局变量或属性时 如下所示 self save if isItSaving NO self saveMyFile 我必须像这样重写 BOOL iis isItSaving id myself self self save

随机推荐

  • 在字符串数组项元素中搜索字符串

    如何在字符串数组项元素内搜索特定文本 以下是 xml 文件的示例 字符串数组名称是 android 我在字符串数组中有一些项目 现在我想搜索 软件 这个词 请告诉我该怎么做
  • C# - 以编程方式推进 Powerpoint 幻灯片放映的方法?

    我希望能够通过按 Windows 窗体中的按钮来推进 Powerpoint 演示文稿 这是我找到的一些代码http bytes com topic c sharp answers 272940 open powerpoint present
  • LINQ to SQL 中的 Guid 类型和(“>”大于比较)

    请帮我 我尝试比较 Where 查询方法中的两个 guid 但我得到编译错误 错误 1 运算符 gt 不能应用于 System Guid 和 System Guid 类型的操作数 Guid startUser Here I get user
  • 克隆存储闭包的结构[重复]

    这个问题在这里已经有答案了 我目前正在尝试用 Rust 实现一个简单的解析器组合器库 为此我想要一个通用的map转换解析器结果的函数 问题是我不知道如何复制持有闭包的结构 一个例子是Map以下示例中的结构体 它有一个mapFunction存
  • 如何链接到 intersphinx 中的根页面

    我已启用sphinx ext intersphinx在我的项目中并添加了以下配置 intersphinx mapping python https docs python org 3 None pyserial https pythonho
  • symfony2:如何在翻译中包含换行符/换行符?

    我该如何在 Symfony 2 4 中获得换行符 messages de yml foo Hello i am a line Hello i am a new line and messages de yml foo gt Hello i
  • 处理取消令牌源的正确模式

    考虑这样一个场景 您需要完成一些异步工作 并且可以在即发即忘模式下运行它 此异步工作能够侦听取消 因此您可以向其传递取消令牌以便能够取消它 在给定时刻 我们可以决定通过使用从中获取取消令牌的取消令牌源对象来请求取消正在进行的活动 因为取消令
  • 所有子类的 C++ 模板专门化

    我需要创建一个像这样的模板函数 template
  • 如何在 Rails 中发现模型属性?

    我发现很难轻松地查看所有模型类中存在哪些属性 属性 因为它们没有在我的类文件中明确定义 为了发现模型属性 我保持 schema rb 文件打开 并在它和我根据需要编写的任何代码之间切换 这可以工作 但很笨重 因为我必须在读取架构文件以获取属
  • Google 地图 api-3:更改多边形的默认光标

    例如 我可以更改地图的draggableCursor 但即使我更改它 多边形的光标仍然是指针 因为地图位于多边形后面 我想将多边形的光标设置为 移动 以便明确多边形是可拖动的 更改多边形光标的正确方法是什么 有一个属性或方法可以做到这一点吗
  • 在 ASP.NET Core 中使用防伪 cookie,但使用非默认 CookieName

    我正在考虑更改 ASP NET Core 中默认防伪 cookie 的名称 我想更改 cookie 名称的原因是为了使 cookie 匿名化 在我看来 最终用户没有理由能够确定此 cookie 的责任 Microsoft AspNetCor
  • 如何使用 JSF2 处理多态性?

    我需要显示 编辑多态实体 我的抽象类是Person 我的具体课程是自然人 and 有道德的人 每个具体类都有自己的自定义属性 如何根据实体类使用适当的显示 编辑 复合 组件 谢谢 不存在这样的事情instanceof在EL 但是 您可以 a
  • NHibernate 通过代码映射 (Loquacious) - 级联选项

    我对使用 NHibernate 按代码映射时的级联枚举选项行为有疑问 枚举有以下选项 Flags public enum Cascade None 0 Persist 2 Refresh 4 Merge 8 Remove 16 Detach
  • 如何根据类别计数过滤数据框

    如何对数据帧进行子集化 以便仅包含包含其值在其他行中显示一定次数的列的行 例如 如果我有一个标记为 食物 的列 我将如何过滤掉在整个数据框中出现少于 5 次的食物的所有行 这是一个简单的例子 dat lt data frame x runi
  • v8 |手动启动垃圾收集器

    有没有办法在 Google V8 引擎上手动启动垃圾收集器 我找不到任何参考 通常GC都支持这个功能 你可以暴露v8 HEAP gt CollectAllGarbage函数到 通过命令标志的全局 JavaScript 命名空间 expose
  • Linux 系统的 OPEN_MAX 在哪里定义?

    OPEN MAX是定义单个程序允许的最大打开文件数的常量 According to Beginning Linux Programming 4th Edition Page 101 该限制通常由 limit h 中的常量 OPEN MAX
  • Laravel RoleMiddleware,未找到类角色

    我正在尝试添加一个简单的中间件来检查用户是否与角色匹配 当我使用中间件时遇到问题 出现异常 ReflectionException 类角色不存在 我不会尝试调用名为 role 的类 因此我认为这在 Laravel 的某个地方神奇地发生了 我
  • 我的 javascript webApp 首先读取一个短的 mp3 文件并在其中找到静音间隙 用于导航目的 然后播放相同的 mp3 文件 提示它从一个静音或另一个静音结束的位置开始 这与通常的 webAudio 场景不同 通常的 webAu
  • 无法在 PHP 中连接 2 个数组

    我最近学习了如何在 PHP 中使用 运算符连接 2 个数组 但考虑一下这段代码 array array Item 1 array array Item 2 var dump array 输出是 数组 1 0 gt 字符串 6 项目 1 为什
  • 单击时如何不突出显示 NSButton 的模板图像?

    我在 NSTableView 的每一行都有 NSButtons 按钮图像在 IB 中设置 并且带 Alpha 通道的黑色图标 窗口设置为暗模式 window appearance NSAppearance named NSAppearanc