Повернуть CAShapeLayer
Я пытаюсь повернуть CAShapeLayer на месте
UIBezierPath *aPath = [UIBezierPath bezierPath];
CGFloat originx = (97.5+250);
CGFloat originy = (205+250);
[aPath moveToPoint:CGPointMake(originx,originy)];
[aPath addArcWithCenter:CGPointMake(originx+15, originy-30) radius:15 startAngle:DEGREES_TO_RADIANS(180) endAngle:DEGREES_TO_RADIANS(360) clockwise:YES];
[aPath addLineToPoint:CGPointMake(originx+30,originy)];
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
shapeLayer.anchorPoint = CGPointMake(originx, originy);
shapeLayer.path = [aPath CGPath];
shapeLayer.strokeColor = [[UIColor blueColor] CGColor];
shapeLayer.lineWidth = 3.0;
shapeLayer.fillColor = [[UIColor blueColor] CGColor];
[aPath closePath];
shapeLayer.transform = CATransform3DMakeRotation(310 * M_PI/180, 0.0, 0.0, 1.0);
[self.view.layer addSublayer:shapeLayer];
Я хочу повернуть фигуру вокруг оси внутри самой фигуры (код выше заставляет мою маленькую фигуру вращаться вокруг оси в нескольких сотнях пикселей от фактического центра.
Я чувствовал, что это должно быть проконтролировано с помощью такого якоря:
shapeLayer.anchorPoint = CGPointMake(originx, originy);
но, кажется, ничего не делает в коде. Есть идеи?
1 ответ
Решение
anchorPoint
относительно границ слоя. Вы не можете использовать опорную точку, чтобы разместить свой слой. Вместо этого вы можете поместить свою форму относительно нулевой точки, повернуть ее и переместить в нужную точку. Вращение и перевод выполняются с помощью преобразования.