2016-11-21 109 views
0
 if !UIAccessibilityIsReduceTransparencyEnabled() { 
      self.blurOutletTop.backgroundColor = UIColor.clear 

      let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.dark) 

      let blurEffectView = UIVisualEffectView(effect: blurEffect) 
      blurEffectView.frame = self.blurOutletTop.bounds 
      blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight] 

      self.view.addSubview(blurEffectView) 

      //self.logoOutlet.addSubview(blurEffectView) 

     } 
     else { 
      self.view.backgroundColor = UIColor.black 
     } 
    } 

我有一個導航欄大小UIView靠近我的屏幕頂部。上面的代碼給它增加了一個模糊效果。我想要做的是在視圖的頂部添加我的導航按鈕,以便它們不會模糊,但僅通過故事板執行此操作也會導致按鈕模糊不清。添加子視圖到一個模糊的視圖

,我讀了添加按鈕的網點作爲子視圖的blurEffectView將放置在頂部的按鈕,但是當我取消了

self.logoOutlet.addSubview(blurEffectView) 

的blurOutletTop的位置被重新安置,按鈕的背景是模糊的,但標籤文本不是,並且按鈕本身被重新定位。我嘗試添加約束,但它也沒有幫助。

讓我的按鈕/圖片超過我的blurTopOutlet最簡單的方法是什麼?

回答

1

我已經在代碼中對UIVisualEffectView進行了子類化,然後將各種控件作爲子視圖添加到它中。非常好的效果。不知道是否可以通過IB完成100%,但由於視圖層次的期望。

  • (1)在IB中創建「主」視圖並添加約束。這裏的選擇是我做的,UIVisualEffectView的子類。 (2)在代碼中創建「主」視圖子視圖,將它們添加到「主」視圖,並在代碼中添加約束。
  • (3)既然你想要某些行爲與某些子視圖(UIButtons)相關聯,那麼一定要爲它們編寫addTarget(target:for :)調用。

加入編輯:您可以通過IB來完成大部分工作。設置一切,因爲UIButtons是模糊視圖的子視圖,請嘗試使用bringSubview(ToFront :)。如果這有效,它可能更容易! (我是老學校和喜歡的東西編碼更多。)

0

的,而不是添加到blurEffectViewlogoOutlet

logoOutlet.addSubview(blurEffectView) 

你應該添加logoOutletblurEffectView

blurEffectView.contentView.addSubview(logoOutlet) 
相關問題