如何解决NSView子视图混合?
有没有办法让一个视图的子视图使用特定的混合模式绘制,例如你可以使用 CALayer ?
我尝试了对我来说最明显的两种方法:
- 将 CIFilter 添加到子视图的层
- 在子视图的绘制函数中设置当前上下文的混合模式,如
let context = NSGraphicsContext.current!.cgContext
context.setBlendMode(.colorDodge)
//usual subview drawing stuff
但这两种方法似乎都不会影响底层视图,即。它们只能在同一个子视图中混合。
作为后备,非常不优雅的方法,我意识到您可以在其他所有内容之上叠加第三个子视图,获取对所有其他子视图的引用,然后在叠加视图中重新绘制所有内容,如
let context = NSGraphicsContext.current!.cgContext
fullyOpaqueBackgroundSubview.layer!.draw(in: context)
context.setBlendMode(.colorDodge)
subviewA.layer!.draw(in: context)
context.setBlendMode(.colorBurn)
subviewB.layer!.draw(in: context)
但我相信一定有一种不那么无知的方法来做到这一点。 ...有一个,对吧?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。