Центрирование овала с помощью CGRectMake Swift

У меня возникли проблемы с попыткой программно центрировать мой овал. В настоящее время у меня есть этот код.

    func setupLayers(){
        let oval = CAShapeLayer()
        oval.frame = CGRectMake(137.5, 283.5, 100, 100)
        oval.path = ovalPath().CGPath;
        self.layer.addSublayer(oval)
        layers["oval"] = oval

        resetLayerPropertiesForLayerIdentifiers(nil)
    }

Этот код может центрировать овал в iPhone 6 и 6s, но я хочу, чтобы он мог центрироваться на всех устройствах.

Я тоже пробовал этот код:

    func drawCircle(size: CGFloat) {
let circleShape = CAShapeLayer()
circleShape.path = UIBezierPath(ovalInRect: CGRectMake(-size/2, -size/2, size, size)).CGPath
circleShape.fillColor = UIColor.blueColor().CGColor
circleShape.strokeColor = UIColor.redColor().CGColor
circleShape.lineWidth = 1
circleShape.frame.origin = view.center
circleShape.name = "circleShape"
view.layer.addSublayer(circleShape)

}

рисоватькруг(100)


person Harish    schedule 01.11.2015    source источник


Ответы (1)


Вам нужно установить AnchorPoint слоя в его центр.

oval.anchorPoint = CGPoint(x: 0.5, y: 0.5)

Затем вы можете установить положение слоя в качестве центра просмотра:

oval.position = self.center
person ozgur    schedule 01.11.2015
comment
Спасибо за быстрый ответ, я попытался реализовать этот код, но по какой-то причине он все еще не центрирует овал. Все равно уходит в сторону. - person Harish; 01.11.2015