anchorPoint
не для установки положения CAShapeLayer, используйте position
вместо этого.
let layer = CAShapeLayer()
layer.borderColor = UIColor.blackColor().CGColor
layer.borderWidth = 100
layer.bounds = CGRectMake(0, 0, 50, 50)
layer.position = myView.center
layer.fillColor = UIColor.redColor().CGColor
view.layer.addSublayer(layer)
Редактировать
Извините за такой грубый ответ прежде, приведенный выше код может не работать, как вы хотите, вот правильный ответ, который я только что вышел. Важно отметить,: Как нарисовать овал путь сделал силу по позиции вашего CAShapeLayer
let layer = CAShapeLayer()
myView.layer.addSublayer(layer)
layer.fillColor = UIColor.redColor().CGColor
layer.anchorPoint = CGPointMake(0.5, 0.5)
layer.position = CGPointMake(myView.layer.bounds.midX, myView.layer.bounds.midY)
layer.path = UIBezierPath(ovalInRect: CGRectMake(-75.0/2, -75.0/2, 75.0, 75.0)).CGPath
яблочной документы,
Овальная дорожка создается в направлении по часовой стрелке (по отношению по умолчанию системы координат)
в другом слове, овал путь рисуется от края вместо центра, так что вы должны принять в для соединения радиуса овала, который вы рисуете. В вашем случае, вам нужно сделать, это:
layer.path = UIBezierPath(ovalInRect: CGRectMake(-75.0/2, -75.0/2, 75.0, 75.0)).CGPath
Теперь мы гарантируем, что центр нарисованной траектории равен центру CAShapeLayer
. Затем мы можем использовать свойство position
для перемещения CAShapeLayer
, как мы хотим. Изображение, приведенное ниже, может помочь вам понять.