如何在不影响边框的情况下将CALayer的背景设置为透明?

时间:2015-03-09 20:59:34

标签: objective-c cocoa swift calayer nsview

我的layer-backed NSView申请表中有Cocoa。使用以下代码,整个自定义视图变为透明:

    self.layer?.opaque = false
    self.layer?.opacity = 0

不幸的是,我需要CALayer的边框保持可见(目前它已变得透明)。我最好如何只获得边界展示?

修改

我现在已经设法让它运转但我不确定为什么。

我以前认为它不相关,但layer backed NSView实际上是NSTextField。这暴露了一个看起来更具影响力的backgroundColor字段"而不是CALayer

设置self.backgroundColor = NSColor.clearColor()完成了这项工作。

但是,我选择了

  1. 设置self.wantsLayer = true
  2. 覆盖wantsUpdateLayer并返回true
  3. 操纵图层的代码在我的updateLayer()方法
  4. 现在的问题是为什么上述工作和使用clearColor上的CALayer

2 个答案:

答案 0 :(得分:5)

如何将图层背景设置为清晰颜色?

self.layer?.backgroundColor = NSColor.clearColor().CGColor

我认为您甚至不需要设置opaqueopacity。我会删除这些行。

答案 1 :(得分:0)

调查结果

它是layer-backed NSTextField而不是常规layer-backed NSView这一事实似乎很重要......它有自己的背景,它将出现在的前面图层的背景除非您设置以下内容:

self.drawsBackground = false

如果你这样做,那么你确实可以使用NSColor.clearColor().CGColor作为图层的backgroundColor。

如果不这样做,那么您需要直接设置视图的backgroundColor来控制背景。

相关问题