【发布时间】:2020-05-11 15:30:59
【问题描述】:
我想达到这个结果
所以我需要在底部添加遮罩,但这里我得到了什么
我尝试过的代码
private func setupImageCutPath () {
let path = UIBezierPath()
path.move(to: .zero)
path.addLine(to: CGPoint(x: 0 , y: self.imgView.frame.height))
path.addLine(to: CGPoint(x: self.imgView.frame.width , y: self.imgView.frame.height - imageCutAwayPart))
path.addLine(to: CGPoint(x: self.imgView.frame.width, y: 0))
// Multiple tried to check from where masking is comming
self.maskLayer.fillColor = UIColor.gray.cgColor
self.maskLayer.lineWidth = 1.0
self.maskLayer.borderColor = UIColor.gray.cgColor
self.maskLayer.borderWidth = 1.0
self.maskLayer.path = path.cgPath
self.imgView.layer.mask = self.maskLayer
}
滚动后我第一次得到正确的结果
我不明白我缺少什么任何帮助?
【问题讨论】:
-
第一次显示时没有得到正确结果的原因是可能因为您在自动布局调整视图大小之前调用了
setupImageCutPath()。如果你创建一个UIImageView子类并更新layoutSubviews()中的掩码,你会更好 -
@DonMag 感谢您的建议,我会试试这个
-
@DonMag 是的,这行得通! ,非常感谢你!!!
标签: ios swift uiimageview layer