Как я могу увидеть рисунок в раскадровке? - PullRequest
0 голосов
/ 27 января 2020

Я нарисовал треугольник, но не вижу на раскадровке. Как я могу увидеть на раскадровке этот рисунок?

enter image description here Просмотр кода контроллера:

class ViewController: UIViewController {

    @IBOutlet weak var fooView: UIView!

    var polygonShape = CAShapeLayer()

    override func viewDidLoad() {
        super.viewDidLoad()

        let polygonPath = UIBezierPath()
        polygonPath.move(to: CGPoint(x: 50, y: -1))
        polygonPath.addLine(to: CGPoint(x: 93.3, y: 74))
        polygonPath.addLine(to: CGPoint(x: 6.7, y: 74))
        polygonPath.close()

        polygonShape.frame = fooView.bounds
        polygonShape.path = polygonPath.cgPath

        fooView.layer.mask = polygonShape

    }
}

1 Ответ

1 голос
/ 27 января 2020

Измените свой класс на этот:

@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.

Результат:

enter image description here

...