模糊的背景迅速与明确的子视图

时间:2017-05-31 06:09:21

标签: ios swift uiblureffect

我想要一个模糊的背景。我有主视图的子视图。我希望子视图不受模糊影响。我该怎么办?

代码:

let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.dark)
        let blurEffectView = UIVisualEffectView(effect: blurEffect)

        blurEffectView.frame = view.bounds


 let vibrancyEffect = UIVibrancyEffect(blurEffect: blurEffect)
   let vibrancyEffectView = UIVisualEffectView(effect: vibrancyEffect)
        vibrancyEffectView.frame = view.bounds

       view.addSubview(blurEffectView)

        view.addSubview(vibrancyEffectView)


        FrameView = UIView()


        if let FrameView = FrameView {

            FrameView.layer.borderColor = UIColor.white.cgColor
            FrameView.layer.borderWidth = 2
 FrameView.frame=CGRect(x:30,y:(view.frame.height/2-50),width:view.frame.width-60,height:100)
            blurEffectView.contentView.addSubview(FrameView)


   }

所以我希望视图模糊,并且要清楚FrameView。

这就是我的应用目前的样子。

2 个答案:

答案 0 :(得分:1)

我尝试了一个测试项目,然后首先将模糊添加到mainView,然后我将frameView添加到mainView,我似乎很好,frameView是不模糊。

    let mainView = UIImageView.init(frame: self.view.bounds);
    mainView.image = UIImage.init(named: "a.png");
    let blurEffect = UIBlurEffect.init(style: .dark);
    let effectView = UIVisualEffectView.init(effect: blurEffect);
    effectView.frame = mainView.bounds;
    effectView.alpha = 1;

    let frameView = UIImageView.init(frame: CGRect.init(x: 0, y: 0, width: 200, height: 50));
    frameView.image = UIImage.init(named: "b.png");
    frameView.center = self.view.center;
    //add the blur view first
    mainView.addSubview(effectView);
    self.view.addSubview(mainView);
    self.view.addSubview(frameView);

enter image description here

答案 1 :(得分:0)

你必须在你的层次结构中添加框架,如你所见,BlurEffectView模糊其中的每个子视图,因此检查你是否将subView添加到viewController的主视图并使用func bringSubView前面......: )