关于objective c:Custom NSWindow with a custom shadow | 珊瑚贝

Custom NSWindow with a custom shadow


我有一个 NSWindow 子类,看起来像这样

enter

困扰我的是我想改变阴影。
在标准窗口上,比如这里的 Xcode,对比度有点弱。

所以我想对它应用一个更强的 NSShadow。

我在这里找到了这个:

带有自定义阴影的NSWindow

显然,您不应该这样做,因为 UI 应该主要由操作系统处理。
但是窗口已经是完全自定义的了,所以我想应该没问题。

我怎样才能做到这一点?

编辑

我忘了提,我知道我可以重绘 NSWindow,但我尽量避免这种情况。

  • 如果您只希望顶部的阴影比其他部分重,看起来您正在使用 INAppStoreWindow,因此请覆盖绘图块。否则,不要碰 NSThemeFrame。
  • 它实际上不是 INAppStoreWindow。它只是一个带有自定义内容视图的无边框窗口。而且我想整体增加阴影,而不仅仅是顶部


据我所知,如果不深入研究私有 API,就无法做到这一点。

如果你非常想改变阴影,唯一的办法就是在你的窗口中设置根视图有一个层,在那个层上设置一个阴影,然后插入内容为阴影。但这也带来了一大堆问题,包括窗口捕获本应用于底层窗口的点击,以及关闭调整句柄的大小。

  • 然而,Electron 做到了。


来源:https://www.codenong.com/14093975/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_8640.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?