NSView 在 10.12 不显示 shadow 问题详解

在 iOS 上,如果我们要一个 View 显示阴影,那么基本上是这么做的:

不过,到了 macOS 上,这样就不灵了——没有任何效果。

答案在于 macOS 上如果你想要给一个 View 使用 layer ,你必须手动标记,比如说这样:

这下,如果你是 10.13,那么就万事大吉了,然后在 10.12 上发现——依旧没有效果。

这是为什么呢?在苹果的官方指南中,我们可以找到答案,说你不应该直接修改 NSView  的 layer  属性,所以你应该先创建一个  NSShadow() 实例,然后修改它的属性,最后把它赋值给 NSView 。比如下面的代码,才是正确操作:

或者,你也可以简单一点,先给 layer  一个 shadow  实例,然后再去修改它们即可。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.