0
我想在適當位置旋轉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