状态栏模糊

时间:2019-08-13 10:43:28

标签: ios swift

我在label中有scrollView。滚动和位于label和文本上方的状态栏时,我想模糊状态栏背景。怎么做?

Example Image

UPD

如果我使用此代码,一切正常,但我的界面冻结。如何解决?

代码:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
        if scrollView.contentOffset.y > 20{

            let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.light)
            let blurEffectView = UIVisualEffectView(effect: blurEffect)
            blurEffectView.translatesAutoresizingMaskIntoConstraints = false
            view.addSubview(blurEffectView)

            blurEffectView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
            blurEffectView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
            blurEffectView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
            blurEffectView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true


            print("fsdjfknsdkfbksjdbfjksdfklsndflknsdlfnlksdfsdfsdf)")
        }

1 个答案:

答案 0 :(得分:0)

检查scrollview的contentOffset属性和scrollview委托的didScoll方法。

也许您可以在滚动视图的顶部添加模糊效果视图,并隐藏或显示偏移量是否大于20(即状态栏的高度)

编辑

根据代码,每次滚动视图滚动时都在添加,因此即使滚动视图滚动了1像素,模糊效果视图也会被添加,只需在视图负载的某个地方添加一次即可,从而使模糊效果实例变为全局,并在此提供的方法(也称为didscroll)中进行隐藏/显示相同的操作。还必须添加其他条件。