Я решил проблему с
path.move(to: .zero)
/* THIS HELPLS ME */ path.addLine(to: CGPoint(x: 0 , y: self.imgView.frame.height - imageCutAwayPart / 2 ))
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))
Но я не понимаю, почему мне нужно переместить CGPoint(x: 0 , y: self.imgView.frame.height - imageCutAwayPart / 2 )
вместо этого CGPoint(x: 0 , y: self.imgView.frame.height)
Если кто-нибудь знает это, пожалуйста, напишите какответ Я обязательно приму ответ
РЕДАКТИРОВАТЬ
В Storybaord была глупая, но умная ошибка
Ошибка была в UIView, который содержит метку, показанную на скриншоте.Видимая часть - это UIView, я думал, что маскирование не работает должным образом.Тем не менее, существует проблема, связанная с тем, что первый раз в маске контроллера просмотра страниц не выполняется, но после прокрутки один раз она становится идеальной.
EDIT2 Благодаря @ DonMag
Следующее работаетрешение для каждого случая
class CutOfImageView:UIImageView {
let imageCutAwayPart:CGFloat = 80
let maskLayer = CAShapeLayer()
override func layoutSubviews() {
super.layoutSubviews()
self.setupImageCutPath()
self.layer.mask = self.maskLayer
}
private func setupImageCutPath () {
let path = UIBezierPath()
path.move(to: .zero)
path.addLine(to: CGPoint(x: 0 , y: self.frame.height ))
path.addLine(to: CGPoint(x: self.frame.width , y: self.frame.height - imageCutAwayPart))
path.addLine(to: CGPoint(x: self.frame.width, y: 0))
path.close()
self.maskLayer.path = path.cgPath
}
}