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
在Apple Document中,
椭圆形路径是沿顺时针方向创建的(相对于默认坐标系)
换句话说,椭圆形路径是从边缘而不是中心绘制的,因此您必须考虑要绘制的椭圆形的半径。对于您的情况,您需要执行以下操作:
layer.path = UIBezierPath(ovalInRect: CGRectMake(-75.0 / 2, -75.0 / 2, 75.0, 75.0)).CGPath
现在,我们确保绘制路径的中心等于CAShapeLayer
。然后,我们可以使用position
property随意移动CAShapeLayer
。下图可以帮助您理解。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句