旋转CAShapeLayer
问题描述:
我想在适当位置旋转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];
我想绕本身的形状(上面的代码让我的小形状周围几百像素的旋转轴内的轴的形状从
实际中心,我觉得这应该有像这样的一个anchorpoint进行控制:
shapeLayer.anchorPoint = CGPointMake(originx, originy);
但似乎做的代码中没有。任何想法?
所以我:1)地点2)变换然后3)移动? – stevenpcurtis
是的,最后两个操作是两个变换的串联。 (提示:对于测试和调试,从较小的角度(例如5°)开始比较容易,因此您可以看到图层是否朝错误的方向移动。) – clemens
嗯,我可以做到这一点的唯一方法是先移动它。我觉得CATransform3D translate = CATransform3DMakeTranslation(52.7,45.46,0); 应该做的工作,但它不 – stevenpcurtis