模糊的 UIImageView 大小问题
Posted
技术标签:
【中文标题】模糊的 UIImageView 大小问题【英文标题】:Blurred UIImageView Sizing Problems 【发布时间】:2017-06-07 19:20:11 【问题描述】:我展示的 UIViewController 有一个 UIImageView,即backgroundImageView
,作为 VC 的背景并设置为填充整个屏幕。
我希望 UIImageView 呈现由 ios 提供的深色模糊效果,但是当我第一次呈现视图控制器时,会暂时出现以下尺寸问题(在设备上但不在模拟器上):
内部viewDidLoad()
:
// `locationImage` is passed during the segue
backgroundImageView.image = locationImage
backgroundImageView.contentMode = .scaleAspectFill
let blurEffect = UIBlurEffect(style: .dark)
let blurEffectView = UIVisualEffectView(effect: blurEffect)
blurEffectView.frame = backgroundImageView.bounds
blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
backgroundImageView.addSubview(blurEffectView)
以上视图控制器的modalPresentationStyle
设置为currentContext
。
如果我暂时移除模糊效果,我会看到我提供给视图控制器的背景图像已正确设置。但是,一旦应用了模糊效果,尺寸问题就会立即出现。
究竟是什么原因造成的?
【问题讨论】:
您是否考虑过使用自动布局而不是设置框架和自动调整蒙版?如果你坚持使用这种方法而不是将 .frame 设置为 .bound 创建一个原点为 0,0 且大小为 bounds.size 的 CGRect。 @UpholderOfTruth 实际上没有。我以前没有考虑过使用 AutoLayout。虽然我只是尝试过,没有任何回报。还是一样的效果。另外,当您说bounds.size
时,您到底是什么意思?
这样做:blurEffectView.frame = CGRect(x: 0, y: 0, width: bounds.size.width, height: bounds.size.height)。您能否编辑问题以显示自动布局。
是的,但到底是什么界限?我尝试了视图的边界,但又遇到了同样的问题。
对不起,我的意思是 backgroundImageView.bounds 只是明确地将原点 x 和 y 设置为零。失败可能是 backgroundImageView 本身的框架不正确。
【参考方案1】:
尝试在viewWillLayoutSubviews()
或viewDidLayoutSuviews()
内设置blurEffectView的框架
here你可以找到更多关于viewcontroller生命周期的信息
【讨论】:
对不起,我忘记了这一点,但我之前尝试过这两种方法都没有运气。起初,我也认为这是一个视图生命周期问题,但没有任何改变。还是同样的问题。以上是关于模糊的 UIImageView 大小问题的主要内容,如果未能解决你的问题,请参考以下文章
为啥 uiimageview 的 contentmode 不起作用?