首页 > 解决方案 > macOS 窗口叠加效果错误?

问题描述

编辑:我仍然没有得到这个工作。有人介意下载我的简单测试项目并在他们的机器上尝试吗?只有样板代码和故事板。

https://www.dropbox.com/sh/qtoqhi7pjq5w3hh/AADLCTY_7FPG18RWeSe57Jroa?dl=0

原始问题:我正在为 Big Sur 开发一个 macOS 应用程序。我想利用窗口栏对我的内容的模糊效果。我已经fullSizeContentView在窗户上设置了面具。但是,只有在滚动视图的前沿和其父视图的前沿之间设置了最小间距时,我才能获得效果。这似乎是 AppKit 中的一个错误。谁能确认或告诉我我做错了什么?

见下面的剪辑: 首先我有一个简单的 Xcode 项目(没有代码,只是使用情节提要)。滚动视图是在视图控制器的内容视图中设置的。滚动视图的顶部、尾部和底部边缘与其父视图没有间距。前缘与其父视图的前缘有标准间距(20pt)。 模糊按预期工作

这按预期工作,但我不想要前缘间距。所以我将前沿间距设置为 0。 将前沿间距设置为 0

并且模糊效果消失了。 没有模糊:(

标签: swiftmacosautolayoutappkit

解决方案


更新:似乎这个“问题”已在 macOS 12 beta 5 中得到修复。

下面的代码可能对 macOS 11 仍然有用。


如今,macOS 充斥着一些奇怪的小“问题”,这似乎就是其中之一。在大多数情况下,这些问题只能通过应用奇怪的解决方案来解决,因为我们无法访问 AppKit 的内部部分。

if let constraint = view.constraints.first(where: { $0.firstAttribute == .leading }) {
   constraint.constant = -0.3
}

应用一个小的负领先约束似乎现在可以解决这个问题。可以在代码中完成,理论上也可以在 Storyboard 中完成,尽管在界面设计器中很难输入和存储十进制值。


推荐阅读