我有一个方法可以根据我UIImageView
的当前帧创建一个遮罩层,它按照我的预期工作。但是,在一种情况下,我在UIImageView
方法中修改viewWillAppear
的高度约束,然后将掩码创建者应用于UIImageView
,这将创建一个具有worng大小的掩码。所以我的问题是,我如何强制获得UIImageView
的修改后的正确框架?
现在我将高度140的内容设为105,但如果我在设置约束后使用layoutIfNeeded
它会变为118,这更接近,但仍然不是105。
更新
我用于创建蒙版的方法:
public func setupMaskForImageView() {
let mask = CALayer()
let resizedMaskImage = resizeImage(UIImage(named: imageMaskName)!, newSize: frame.size)
mask.contents = resizedMaskImage
mask.frame = CGRectMake(0, 0, frame.size.width, frame.size.height)
layer.mask = mask
layer.masksToBounds = true
}
我用
修改了viewWillAppear
中的约束
imageHeight.constant = UIScreen.mainScreen().bounds.width / 2.5
答案 0 :(得分:1)
将框架保持在layoutSubiews
始终是理想的。来自Apple开发人员UIKit doc:
“layoutSubviews - 如果您需要对子视图的布局进行更精确的控制,请执行此方法,而不是约束或自动调整行为提供的。”
话虽如此,您最好的选择可能是为您的自定义UIImageView创建一个子类,并在layoutSubviews
中插入您的重构逻辑。这将确保您的视图和蒙版始终正确构图。