Open hstdt opened 9 months ago
这个效果我看过,对于立刻想获得这样的效果是很好的一种实现(只需要 iOS Target)
但是其实这个组建设计之初我就是希望能够使用 SwiftUI 的内置组建来完成,这样可以灵活的部署到所有设备上。
你这个实现存在一个问题,你试试看切换深/浅色模式,再切回去,移除掉的 filter 又回来了。
解决办法是:自定义一个 VisualEffectView 继承 UIVisualEffectView 把 traitCollection 覆盖掉。
你可以尝试把 macOS 的版本也做出来,这样我可能会考虑合并。
我现在也在找寻一种更加灵活的方式来构建这个 BackdropBlurView,可以参考我的 Tweet
目前能实现的样子:
现在的开发卡在 iOS 上,如果你有兴趣,我们也可以一起研究☺️
@LiYanan2004 已更新
ok. 先放一下,如果我的 BackdropEffectView
失败了我就来合这个
BackdropEffectView有demo代码么,没看懂思路
我只能简单地讲一下,太详细的一下子也讲不清楚,就是通过使用 UIView/NSView 来找 Layer Tree 中下层的内容,用 TimelineView + Canvas 画上去,这样就得到了一个 SwiftUI 的 backdrop 层,我们就可以在它上面加 blur、shader 这些了
移除使用默认的
.ultraThinMaterial
,因为默认的blur效果太强了且不可控。避免手动设置grayscale等参数,可以更自由添加更多滤镜效果。左边是之前的效果,右边是新的效果。