0
for (CALayer *layer in self.view.layer.sublayers) {
if ([layer isKindOfClass:[CAShapeLayer class]]) {
CAShapeLayer *copy = (CAShapeLayer *)layer;
if ([copy.name isEqualToString:@"datumSideLayer"]) {
//get start position, get height, get width
CGPoint startPos = copy.frame.origin;
float width = copy.frame.size.width;
float height = copy.frame.size.height;
CGPoint startPoint = CGPointMake(startPos.x + (width/2), startPos.y);
CGPoint endPoint = CGPointMake(startPos.x + (width/2), startPos.y + height);
NSLog(@"%.1f:%.1f, %.1f:%.1f", startPoint.x, startPoint.y, endPoint.x, endPoint.y);
[self drawDashedLineFrom:startPoint toEnd:endPoint inView:_thicknessUI];
break;
}
}
}
NSLog 출력은 0.0:0.0, 0.0:0.0
입니다.중첩 된 CAShapeLayer § 원점 가져 오기?
중첩 된 모양 레이어는 속성으로 강력하게 인스턴스화됩니다. 그러나 프레임에서 원점, 너비 또는 높이를 가져올 수 없습니다.
EDIT : 추가 파기 후 내 CAShapeLayer에 대한 프레임 세트가 없습니다 - 경로로 그려 지므로
그러나 어떻게하면 이제이 문제를 해결하여 경로의 시작부터 잡을 수 있습니까?
[path moveToPoint:CGPointMake(self.view.frame.size.width/2 - _plateLengthPX, tenPercent)]; // datum side start
[path addLineToPoint:CGPointMake(self.view.frame.size.width/2 - capStartWidthPX - rootGapPX, tenPercent)]; // weld(cap) start
[path addLineToPoint:CGPointMake(self.view.frame.size.width/2 - rootGapPX, tenPercent + _plateHeightPX - rootPrepHeightPX)]; // weld(root prep) start
[path addLineToPoint:CGPointMake(self.view.frame.size.width/2 - rootGapPX, tenPercent + _plateHeightPX)]; // weld(root prep) end
[path addLineToPoint:CGPointMake(self.view.frame.size.width/2 - _plateLengthPX, tenPercent + _plateHeightPX)]; // datum side end
[path addLineToPoint:CGPointMake(self.view.frame.size.width/2 - _plateLengthPX, tenPercent + _plateHeightPX/2 + 10)]; // datum side end
[path addLineToPoint:CGPointMake(self.view.frame.size.width/2 - _plateLengthPX + 15, tenPercent + _plateHeightPX/2 + 5)]; // datum side end
[path addLineToPoint:CGPointMake(self.view.frame.size.width/2 - _plateLengthPX - 15, tenPercent + _plateHeightPX/2 - 5)]; // datum side end
[path addLineToPoint:CGPointMake(self.view.frame.size.width/2 - _plateLengthPX, tenPercent + _plateHeightPX/2 - 10)]; // datum side end
_datumLayer = [CAShapeLayer layer];
_datumLayer.name = @"datumSideLayer";
_datumLayer.path = [path CGPath];
_datumLayer.strokeColor = [_lineColor CGColor];
_datumLayer.lineWidth = 2.0;
_datumLayer.fillColor = [_shaderColor CGColor];
[self.view.layer addSublayer:_datumLayer];