【问题标题】:NSButton on NSVisualEffectView: Wrong Background ColorNSVisualEffectView 上的 NSButton:错误的背景颜色
【发布时间】:2015-06-05 06:04:06
【问题描述】:

我在为 10.10 开发的 NSPopover 中有一个 NSVisualEffectView

当子类化 NSVisualEffectView 以具有悬停背景颜色效果时,无边框按钮颜色似乎不同

我尝试将按钮单元的backgroundColor 设置为clearColor 或与我在NSVisualEffectViewdrawRect: 中使用的相同,前者给出了错误的颜色(未填充蓝色) 和后来的颜色错误仍然相同。 (其边框周围的灰色框)。

CALayer 可以解决这个问题,但有没有办法不使用它?

有什么想法吗?

【问题讨论】:

  • 你为什么要继承 NSVisualEffectView?
  • 得到了我的理由,但是在使用 NSView 时也会发生同样的情况,所以它的 NSVisualEffectView 或 NSView 似乎与问题无关?
  • 你解决了这个问题吗?
  • 您提到“CALayer 可以解决此问题”。你能详细说明吗?我愿意尝试对我的项目进行修复。

标签: objective-c swift nsview nsbutton nsvisualeffectview


【解决方案1】:

经过多次尝试和错误,这对我有用:

button.wantsLayer = true
button.layer?.backgroundColor = NSColor.clearColor().CGColor

我有一个具有 NSVisualEffectView 风格的 NSTableView。我创建了一个自定义的 NSTableViewCell 类并将这些行放在它的 drawRect 方法中。

【讨论】:

  • 由于我不再有工作项目来验证这一点(感谢 Swift 2 中所做的语法更改),我会为你的努力投上一票。我认为这将起作用,因为在成为开发人员一年多之后,似乎大多数绘图问题都可以通过利用 CA 层 (.wantsLayer) 来解决。但是,既然如此,在有人可以确认之前,我无法将其标记为答案。
  • 我碰巧有另一个项目遇到了这个问题。似乎这并不总能解决问题,例如在 NSImageView 上放置一个按钮。仍在寻找一劳永逸的解决方案。
  • 这个我试过了,连CGColor.clear都试过了,也没效果
  • 我在按钮上添加了一个图像有没有办法让它具有活力效果?
【解决方案2】:

这已经开放了很长时间,但我自己只需要答案,也许其他人很乐意在这里找到这个答案,答案仅适用于 Mac OS 10.14 及更高版本

button.contentTintColor = .white

通过将 contetTintColor 设置为您可能需要的任何颜色,它会出于某种原因移除背景颜色。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多