导航栏实时模糊效果

37
如何实现类似 iPhone 中的 Trailers 应用程序中导航栏的实时模糊效果。 即当您滚动内容时,导航栏后面的内容应该变得模糊。 请帮我写一些代码。 谢谢! 我想要实现这样的效果:

1
从iOS 8.0开始,新增了一个名为"UIVisualEffectView"的模糊类。 - Hemang
谢谢您的回复,但是您能告诉我如何将这个类应用到导航栏吗?先谢谢了。 - Shikhar varshney
好的,当然可以,请参考这里的一些答案:https://dev59.com/QWAf5IYBdhLWcg3w_W9j。 - Hemang
但是这些效果并不都适用于导航栏。我想要的是,当用户滚动时,导航栏背景中的内容应该给前面的导航栏带来模糊效果。 - Shikhar varshney
12个回答

0
我之前也遇到了同样的问题,但现在我明白这种模糊效果至少在iOS 16上是默认行为。我的错误在于将UITableView固定到view.safeAreaLayoutGuide.topAnchor上。要在navigationBar或tabBar上实现模糊效果,你只需要将其固定到view的边缘,例如view.topAnchor。

-1

这是neoneye在上面提供的解决方案,完美地应用于UIToolbar。

extension UIToolbar {
    func toolBarBlurEffect() {
        isTranslucent = true
        setBackgroundImage(UIImage(), forToolbarPosition: .any, barMetrics: .default)
        let statusBarHeight: CGFloat = UIApplication.shared.statusBarFrame.height
        var blurFrame = bounds
        blurFrame.size.height += statusBarHeight
        let blurView  = UIVisualEffectView(effect: UIBlurEffect(style: .dark))
        blurView.isUserInteractionEnabled = false
        blurView.frame = blurFrame
        blurView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
        addSubview(blurView)
        blurView.layer.zPosition = -1
    }
}

使用方法类似:

navigationController?.toolbar.toolBarBlurEffect()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接