Сосредоточить безье путь к UIview? - PullRequest
0 голосов
/ 30 августа 2018

Для моей жизни я не могу центрировать этот путь Безье (кружок показан ниже). Оранжевый вид правильно ограничен и выровнен по горизонтали, однако, когда я добавляю 3 слоя к оранжевому виду, используя метод, описанный ниже, я не могу отцентрировать его к оранжевому виду. Я объявил оранжевый вид как spinnerHolder.

enter image description here

private func createCircleShapeLayer(strokeColor: UIColor, fillColor: UIColor) -> CAShapeLayer {
    let layer = CAShapeLayer()

    //The farther from 0 x is for this, the more separated the movements of the 3 paths.
    let circularPath = UIBezierPath(arcCenter: CGPoint(x: 0, y: 0),
                                    radius: 30,
                                    startAngle: 0,
                                    endAngle: 2 * CGFloat.pi,
                                    clockwise: true)
    layer.path = circularPath.cgPath
    layer.strokeColor = strokeColor.cgColor
    layer.lineWidth = 3
    layer.fillColor = fillColor.cgColor
    layer.lineCap = kCALineCapRound
    layer.position = spinnerHolder.center
    return layer
}

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

установить точку ArcCenter как

let centerPoint = CGPoint(x:self.viewRect.bounds.midX, y: self.viewRect.bounds.midY)
0 голосов
/ 30 августа 2018

1 - изменить arcCenter на

let circularPath = UIBezierPath(arcCenter: CGPoint(x:spinnerHolder.frame.width/2, y:spinnerHolder.frame.height/2),
                                radius: 30,
                                startAngle: 0,
                                endAngle: 2 * CGFloat.pi,
                                clockwise: true)

2- Прокомментируйте это

layer.position = spinnerHolder.center

3 - вызов метода внутри viewDidLayoutSubviews

var once = false
override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    if once {
        spinnerHolder.addSublayer(createCircleShapeLayer(,,,,,))
        once = false
    }
}

вызов внутри viewDidLayoutSubviews не обязателен, добавляйте его в любое время и в любом месте, но не раньше, чем VC загрузит

4- Проверьте это Центрирование CAShapeLayer в UIView Swift

...