将子视图添加到模糊视图
Adding subview to a blurred view
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中创建"main"视图并添加约束。这里的替代方法是我所做的,子类 UIVisualEffectView。
- (2) 在代码中创建"main"视图子视图,将它们添加到"main"视图中,并在代码中添加约束。
- (3) 由于您希望某些操作与某些子视图(UIButtons)相关联,因此还要确保为它们编写 addTarget(target:for:) 调用代码。
添加编辑:您可以通过 IB 完成其中的大部分工作。设置一切,因为 UIButtons 是你模糊视图的子视图,尝试使用 bringSubview(ToFront:)。如果可行,那可能会容易得多! (我是守旧派,更喜欢编码。)
将您不想模糊的按钮和其他视图添加到 blurEffectView.contentView
:
blurEffectView.contentView.addSubview(someButton)
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中创建"main"视图并添加约束。这里的替代方法是我所做的,子类 UIVisualEffectView。
- (2) 在代码中创建"main"视图子视图,将它们添加到"main"视图中,并在代码中添加约束。
- (3) 由于您希望某些操作与某些子视图(UIButtons)相关联,因此还要确保为它们编写 addTarget(target:for:) 调用代码。
添加编辑:您可以通过 IB 完成其中的大部分工作。设置一切,因为 UIButtons 是你模糊视图的子视图,尝试使用 bringSubview(ToFront:)。如果可行,那可能会容易得多! (我是守旧派,更喜欢编码。)
将您不想模糊的按钮和其他视图添加到 blurEffectView.contentView
:
blurEffectView.contentView.addSubview(someButton)