【问题标题】:how to get a blurred effect behind my UINavigationBar如何在我的 UINavigationBar 后面获得模糊效果
【发布时间】:2016-06-22 01:22:47
【问题描述】:

我一直在尝试让我的 scrollView 出现在导航栏下的效果略微模糊,就像苹果消息应用程序中的情况一样。我尝试了以下方法,但都没有奏效:

1:

self.navigationController?.navigationBar.isTranslucent = true

2:

self.navigationController?.navigationBar.barStyle = UIBarStyle.blackTranslucent

3:

self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)

4:

self.navigationController?.navigationBar.backgroundColor = UIColor.clear()

我已经阅读了许多有关上述方法的变体的帖子,并且尝试了其中的大部分但无济于事。我认为设置 isTranslucent = true 的目的是为了获得这种效果。还有什么我应该尝试的吗?基本上我只是希望我的导航栏稍微透明。

【问题讨论】:

    标签: ios xcode swift uinavigationbar


    【解决方案1】:

    UIVisualEffectView 是您正在寻找的,并且很好地证明了here

    let bounds = self.navigationController?.navigationBar.bounds as CGRect!
    let visualEffectView = UIVisualEffectView(effect: UIBlurEffect(style: .Light))
    visualEffectView.frame = bounds
    self.navigationController?.navigationBar.addSubview(visualEffectView)
    

    也就是说,同时使用方法 1 和 2 也应该可以:

    self.navigationController.navigationBar.translucent = YES;
    self.navigationController.navigationBar.topItem.title = @"Contacts";
    self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
    

    【讨论】:

      【解决方案2】:

      在这里你可以为你的导航栏模糊效果添加这个代码这个功能非常适合你

      func navigationBlurEffect() {
          // Add blur view
          let bounds = self.navigationController?.navigationBar.bounds as CGRect!
          let visualEffectView = UIVisualEffectView(effect: UIBlurEffect(style: .Light))
          visualEffectView.frame = bounds
          visualEffectView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
      
          //here you can choose one 
          self.navigationController?.navigationBar.addSubview(visualEffectView)
          // Or
          /*
       If you find that after adding blur effect on navigationBar, navigation buttons are not visible then add below line after adding blurView code.
          */ 
          self.navigationController?.navigationBar.sendSubviewToBack(visualEffectView)
      
          // Here you can add visual effects to any UIView control.
          // Replace custom view with navigation bar in above code to add effects to custom view.
      }
      

      //**这仅适用于图像模糊代码 这段代码可用于图像模糊效果

        func getImageBlur(image:UIImageView){
              let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.Light)
              let blurEffectView = UIVisualEffectView(effect: blurEffect)
              blurEffectView.frame = (image.bounds)
              blurEffectView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
              image.addSubview(blurEffectView)
          }
      

      【讨论】:

        【解决方案3】:
            let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.Dark)
            let blurEffectView = UIVisualEffectView(effect: blurEffect)
            blurEffectView.frame = (self.navigationController?.navigationBar.bounds)!
            self.navigationController?.navigationBar.addSubview(blurEffectView)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-06-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多