2017-06-20 20 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

このビューはビュー階層内でどこにありますか。 VCの 'self.view'にblurViewを追加しましたか?その場合は、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 
     } 

    } 
} 
関連する問題