2017-06-20 92 views
0

我有以下看法模糊,我想为背景图。问题是,它成为第一个视图,隐藏在标签/单元格下面等我想self.sendSubview(toBack: blurEffectView)会做到这一点 - 你知道为什么吗? :添加的UIView为背景视图

更新:也试过:self.insertSubview(blurEffectView, belowSubview: self)

import Foundation 
import UIKit 

extension UIView 
{ 
    func addBlurEffect() 
    { 
     if !UIAccessibilityIsReduceTransparencyEnabled() { 

      self.backgroundColor = UIColor.clear 
      let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.light) 
      let blurEffectView = UIVisualEffectView(effect: blurEffect) 
      blurEffectView.frame = self.bounds 
      blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight] 
      self.addSubview(blurEffectView) 
      self.sendSubview(toBack: blurEffectView) 
     } else { 
      self.backgroundColor = UIColor.white 
     } 

    } 
} 
+1

哪里是在视图层次对此有何看法?你有没有将blurView添加到VC的'self.view'?如果是这样,你需要在VC上调用'self.view.sendSubview(toBack:myBlurView)'。 – vacawama

+0

谢谢。事实证明,只有在使用UIViewController或UItableView时才是如此。 –

回答

0

事实证明,它使用的UIViewController或UITableView的时候只。

import Foundation 
import UIKit 

extension UIView 
{ 
    func addBlurEffect() 
    { 
     if !UIAccessibilityIsReduceTransparencyEnabled() { 

      self.backgroundColor = UIColor.clear 
      let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.light) 
      let blurEffectView = UIVisualEffectView(effect: blurEffect) 
      blurEffectView.frame = self.bounds 
      blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight] 

      if (self is UICollectionView){ 
       (self as! UICollectionView).backgroundView = blurEffectView 
      }else{ 
       self.addSubview(blurEffectView) 
       self.insertSubview(blurEffectView, belowSubview: self) 
      } 

     } else { 
      self.backgroundColor = UIColor.white 
     } 

    } 
}