我想在ImageView上应用稍微模糊的图层。 我在imageView的顶部放置了一个视图,将其子类化如下:
class BlurredView: UIView {
override func draw(_ rect: CGRect) {
self.backgroundColor = UIColor.clear
let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.extraLight)
let blurEffectView = UIVisualEffectView(effect: blurEffect)
blurEffectView.backgroundColor = UIColor.clear
blurEffectView.frame = self.bounds
blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
self.addSubview(blurEffectView)
}
}
结果与我的预期完全不同。
https://helpx.adobe.com/experience-manager/using/custom_columns.html
如何自定义它以使这种模糊更轻,所以图片仍然显示一些细节?
答案 0 :(得分:0)
正如评论中提到的https://stackoverflow.com/users/1387306/chrstpsln,这可以通过更改 UIVisualEffectView 的 alpha 来实现。
作为奖励,您可以添加淡入淡出动画以使过渡感觉更平滑。
这是一个如何通过扩展将这种效果添加到任何视图控制器的示例:
extension UIViewController {
func addBlurEffect() {
let blurEffect = UIBlurEffect(style: .light)
let blurVisualEffectView = UIVisualEffectView(effect: blurEffect)
blurVisualEffectView.frame = UIScreen.main.bounds
blurVisualEffectView.alpha = 0.1
// Bonus animation - Or just set the alpha higher
UIView.animate(withDuration: 0.3) {
blurVisualEffectView.alpha = 0.90
}
view.addSubview(blurVisualEffectView)
}
}
用法:
let viewController = UIViewController()
viewController.addBlurEffect()
答案 1 :(得分:-2)
您无法更改模糊量,您唯一可以做的就是更改模糊效果样式:
UIBlurEffectStyle.light
UIBlurEffectStyle.extraLight
UIBlurEffectStyle.dark
尝试更改模糊效果alpha。此外,由于您的图像很亮,您应该使用灯光样式而不是额外的灯光,以免丢失细节。
let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.light)
blurEffect.alpha = 0.95