Измените свой класс на этот:
@IBDesignable
class FirstImageView: UIView {
var polygonShape: CAShapeLayer!
override init(frame: CGRect) {
super.init(frame: frame)
commonInit()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
commonInit()
}
func commonInit() -> Void {
if polygonShape == nil {
polygonShape = CAShapeLayer()
layer.mask = polygonShape
}
}
override func layoutSubviews() {
super.layoutSubviews()
let polygonPath = UIBezierPath()
polygonPath.move(to: CGPoint(x: 0.0, y: bounds.size.height))
polygonPath.addLine(to: CGPoint(x: bounds.width * 0.5, y: 0.0))
polygonPath.addLine(to: CGPoint(x: bounds.size.width, y: bounds.size.height))
polygonPath.close()
polygonShape.path = polygonPath.cgPath
}
}
Вы можете удалить все из вашего ViewController
класса. На этом этапе вам даже не нужен класс.
Выберите представление на раскадровке, а в верхней части панели Identity Inspector
измените Custom Class
со значения по умолчанию UIView
на FirstImageView
.
В верхнем меню Editor
выберите Refresh All Views
или убедитесь, что установлен флажок Automatically Refresh Views
.
Результат: