带有圆角的 CALayer 显示黑色或外来内容

CALayer with rounded corners displays either black or foreign content

事情是这样的:我有一个几乎已经完成的应用程序。我添加了一个与 GUI 完全无关的功能(我认为),我注意到 GUI 元素的一种奇怪行为,这些元素已经被抛光并且可以完美地工作。经过两周的尝试、disabling/enabling 代码、重新创建和更改内容,我完全不知道如何解决这个问题。

看看这张照片:

两个个bug同时出现,所以我把它们合并成一个问题。

  1. 我有一个简单的背景视图,其中 .wantsLayer = true 和 .masksToBounds = true。在它上面,我有多个具有相同设置的视图和一个 .cornerRadius 到它们的图层。几周前,这工作得很好。现在我可以看到一些(!不是每个)角落实际上并没有被切断,而是显示(通常只是黑色)内容。
  2. 一些角落显示白色内容(左上角)。有些显示完全不同层的内容(底部视图)!

澄清一下:出于调试原因,我在图片顶部的白色视图下方添加了一个简单的红色分层视图。我希望白色视图在顶部和底部都有圆角(红色!)。然而,上面的是白色的(有一条红线),下面的根本不是圆的。其次,这个对我来说很奇怪,底部视图 根本没有任何设置为红色 !红色角来自顶视图图层的颜色!如果我将顶部视图的背景视图设为蓝色而不是红色,底部视图的角也会变成蓝色。

到目前为止我发现了什么:

  1. 当父视图未设置为 .maskToBounds = true 时,角点通常会发生。它在我的示例中设置并且之前也有效。我怎么能在不触及 Interface Builder 中的任何相关代码或视图的情况下把它搞砸?
  2. 我在网上找不到任何关于图层显示其他图层内容的部分不应该可见的信息...

非常感谢任何帮助!

注意:底部视图上有一个投影,这是一个完全不同的视图,除了投影之外什么都不做。截图忘记删了

我不知道这种行为背后的原因,但我找到了解决方案。

NSProgressIndicator 是众多视图(带有 CALayers)和子视图之一。我为它分配了一个名为 "Hue Adjust" 且值为 -0.5 的内容过滤器,以便具有不同颜色的栏。在 Interface Builder 中删除这个内容过滤器解决了这个问题,GUI 看起来又像它应该的那样:

我仍然很想知道为什么会发生这种情况,以及如何在不丢失角落的情况下保持我的有色进度条...