我有一个View控制器,它具有全屏UIImageView。当控制器加载时,我只是在整个屏幕上设置模糊效果。 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视图时它不起作用...
答案 0 :(得分:5)
我在这里看到两个可能的问题:
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)
}
答案 1 :(得分:0)