我有一个具有全屏UIImageView的View控制器。当控制器加载时,我只是在整个屏幕上设置了模糊效果。 UIImageView的内容模式设置为scaleAspectFill。我这样设置模糊效果:
@IBOutlet weak var previewImage: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
previewImage.image = userPhoto
let blur = UIVisualEffectView(effect: UIBlurEffect(style: .Light))
blur.frame = self.view.bounds
previewImage.addSubview(blur)
}
当我在iPhone 6上测试该应用程序时,我得到以下结果:
右边有一个偏移量,我不知道为什么。下面的图片是否已正确全屏显示,但我可以得到模糊效果以适合它...
****编辑****
我直接将模糊效果应用于VC的视图,现在它可以正常工作,但是我想知道为什么在将子视图添加到UIImage视图时它不起作用...
最佳答案
我在这里看到两个可能的问题:
viewDidLoad
阶段布置。在这种情况下,您可以强制他们手动进行布局:override func viewDidLoad() {
super.viewDidLoad()
self.view.layoutIfNeeded()
...
}
previewImage
,而不是根视图。您必须检查情节提要或修复代码:override func viewDidLoad() {
super.viewDidLoad()
previewImage.image = userPhoto
let blur = UIVisualEffectView(effect: UIBlurEffect(style: .Light))
blur.frame = self.view.bounds
self.view.insertSubview(blur, aboveSubview: previewImage)
}