模糊效果没有填满整个View
Blur effect does not fill the entire 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 视图时它不起作用...
我在这里看到两个可能的问题:
视图未在 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)
}
基于@kelin的回答。您甚至可以在界面中的图像上方添加模糊效果 builder.Just 在界面构建器的对象部分中搜索 Visual Effect View with Blur
。然后在图像上方添加 Visual Effect View
视图。它也可以通过 Attributes inspector
完全自定义。这样你就可以确保模糊会占据整个屏幕。从架构的角度来看,它也更清晰,您不需要通过代码配置视图。
我有一个具有全屏 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 视图时它不起作用...
我在这里看到两个可能的问题:
视图未在
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) }
基于@kelin的回答。您甚至可以在界面中的图像上方添加模糊效果 builder.Just 在界面构建器的对象部分中搜索 Visual Effect View with Blur
。然后在图像上方添加 Visual Effect View
视图。它也可以通过 Attributes inspector
完全自定义。这样你就可以确保模糊会占据整个屏幕。从架构的角度来看,它也更清晰,您不需要通过代码配置视图。