添加子视图到一个模糊的视图
问题描述:
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 :)。如果这有效,它可能更容易! (我是老学校和喜欢的东西编码更多。)
答
的,而不是添加到blurEffectView
logoOutlet
:
logoOutlet.addSubview(blurEffectView)
你应该添加logoOutlet
到blurEffectView
:
blurEffectView.contentView.addSubview(logoOutlet)