将子视图添加到模糊视图

时间:2016-11-21 21:49:40

标签: ios swift subview uiblureffect

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

2 个答案:

答案 0 :(得分:1)

我在代码中将UIVisualEffectView子类化,然后将各种控件添加为子视图。非常好的效果。由于视图等级预期,不确定是否可以通过IB 100%完成。

  • (1)在IB中创建“主”视图并添加约束。这里的替代方案是我做的,子类UIVisualEffectView。
  • (2)在代码中创建“主”视图子视图,将它们添加到“主”视图,并在代码中添加约束。
  • (3)由于您需要与某些子视图(UIButtons)相关联的某些操作,因此还要确保为它们编写addTarget(target:for :)调用。

ADDED EDIT:您可以通过IB完成大部分工作。设置一切,由于UIButtons是模糊视图的子视图,请尝试使用bringSubview(ToFront :)。如果有效,那可能会容易得多! (我老了,喜欢编码更多。)

答案 1 :(得分:-1)

而不是将blurEffectView添加到logoOutlet

logoOutlet.addSubview(blurEffectView)

您应该将logoOutlet添加到blurEffectView

blurEffectView.contentView.addSubview(logoOutlet)