Центр CAShapeLayer - PullRequest
       60

Центр CAShapeLayer

0 голосов
/ 11 февраля 2020

Я попытался центрировать CAShapeLayer в UIImageView, но не удалось, и я нашел решение, которое я добавил (CAShapeLayer) в UIVIew, а затем добавил UIVIew в ImageView, и это сработало !!!

Is это хорошие практики? любое предложение

func Draw(Fn:Bool) {

        let theCenter = CGPoint(x: img.bounds.midX, y: img.bounds.midY)

        // Create Layer To Add The CAShapeLayer On it So I can Center it
        let DrawingLayer = UIView(frame: CGRect(x: img.bounds.midX, y: img.bounds.midY, width: 140, height: 80))
        DrawingLayer.center = theCenter
        img.addSubview(DrawingLayer)

        // Create The Drawing
        let shapeLayer = CAShapeLayer()
        shapeLayer.path = UIBezierPath(ovalIn: CGRect(x: 0, y: 0, width: 140, height: 80)).cgPath
        shapeLayer.fillColor = UIColor.clear.cgColor

        shapeLayer.lineWidth = 3.0


        // Add Drawing to UIView
        DrawingLayer.layer.addSublayer(shapeLayer)
        // Add UIView To ImageView
        img.addSubview(DrawingLayer)
    }

Я использовал этот код:

func DrawArmor(Fn:Bool) {

        let shapeLayer = CAShapeLayer()
        shapeLayer.path = UIBezierPath(ovalIn: CGRect(x: 0, y: 0, width: 140, height: 80)).cgPath
        shapeLayer.fillColor = UIColor.clear.cgColor

        shapeLayer.lineWidth = 3.0
        if (Fn) {
            shapeLayer.name = "Armor Friendly"
            shapeLayer.strokeColor = UIColor.blue.cgColor
        }else{
            shapeLayer.name = "ArmorEnemy"
            shapeLayer.strokeColor = UIColor.red.cgColor
        }

        img.layer.addSublayer(shapeLayer)
    }

, но в правом нижнем углу показан чертеж, означающий, что точка привязки не является центром

enter image description here

1 Ответ

0 голосов
/ 11 февраля 2020

Найти решение

shapeLayer.frame = CGRect(x: img.bounds.midX, y: img.bounds.midY, width: 140, height: 80)
shapeLayer.position = CGPoint(x: img.bounds.midX, y: img.bounds.midY)

Я установил размер CAShapeLayer, а затем установил позицию для него и его работы

...