Позиционирование CAShapeLayer - PullRequest
0 голосов
/ 11 мая 2019

Я сейчас пытаюсь реализовать CAShapeLayer. Он работает нормально, но его позиция не работает так, как я хочу.

Я хочу, чтобы круг отображался внутри верхнего выбранного UIView, которое вы видите на втором изображении ниже. Для этого я попытался установить arcCenter на circleView.center. Но то, что отображается, это изображение ниже.

Как это отображается:
enter image description here

Я хочу, чтобы он отображался в центре этого UIView:
enter image description here

Мой код:

func displayCircle() {
        let color = UIColor(red: 11/255, green: 95/255, blue: 244/255, alpha: 1)
        let trackLayer = CAShapeLayer()
        let center = circleView.center
        let circularPath = UIBezierPath(arcCenter: center, radius: 100, startAngle: -CGFloat.pi / 2, endAngle: 2 * CGFloat.pi, clockwise: true)

        trackLayer.path = circularPath.cgPath
        trackLayer.strokeColor = UIColor.groupTableViewBackground.cgColor
        trackLayer.lineWidth = 20
        trackLayer.fillColor = UIColor.clear.cgColor

        shapeLayer.path = circularPath.cgPath
        shapeLayer.strokeColor = color.cgColor
        shapeLayer.lineWidth = 20
        shapeLayer.fillColor = UIColor.clear.cgColor
        shapeLayer.lineCap = CAShapeLayerLineCap.round
        shapeLayer.strokeEnd = 0

        circleView.layer.addSublayer(trackLayer)
        circleView.layer.addSublayer(shapeLayer)
    }

Редактировать, ограничения UIView:
enter image description here

1 Ответ

1 голос
/ 11 мая 2019

Вы можете просто изменить свое центральное положение кругового обзора, как показано ниже,

let center = CGPoint(x: circleView.frame.size.width/2, y: circleView.frame.size.height/2)

Надеюсь, что этот способ может помочь вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...