添加子视图到一个模糊的视图

问题描述:

 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最简单的方法是什么?

我已经在代码中对UIVisualEffectView进行了子类化,然后将各种控件作为子视图添加到它中。非常好的效果。不知道是否可以通过IB完成100%,但由于视图层次的期望。

  • (1)在IB中创建“主”视图并添加约束。这里的选择是我做的,UIVisualEffectView的子类。 (2)在代码中创建“主”视图子视图,将它们添加到“主”视图,并在代码中添加约束。
  • (3)既然你想要某些行为与某些子视图(UIButtons)相关联,那么一定要为它们编写addTarget(target:for :)调用。

加入编辑:您可以通过IB来完成大部分工作。设置一切,因为UIButtons是模糊视图的子视图,请尝试使用bringSubview(ToFront :)。如果这有效,它可能更容易! (我是老学校和喜欢的东西编码更多。)

的,而不是添加到blurEffectViewlogoOutlet

logoOutlet.addSubview(blurEffectView) 

你应该添加logoOutletblurEffectView

blurEffectView.contentView.addSubview(logoOutlet)