2013-07-09 77 views
1

我需要繪製複雜的形狀,這樣的事情: enter image description hereCAShapeLayer描繪軌跡原語覆蓋

所以我嘗試:

CGFloat offsetAngle = 15 * M_PI/180; 

CGPathAddArc(path, nil, 39/2, 30, 39/2-0.1, offsetAngle, -M_PI-offsetAngle, YES); 

CGFloat linesXOffset = 2.5; 
CGFloat linesYOffset = 30; 
CGPathMoveToPoint(path, nil, linesXOffset, linesYOffset); 
CGPathAddLineToPoint(path, nil, 39-linesXOffset, linesYOffset); 
CGPathAddLineToPoint(path, nil,39/2,//X 
        linesYOffset + CGRectGetHeight(self.bounds)/2-220/2-linesYOffset); 

CAShapeLayer *shapeLayer = [CAShapeLayer layer]; 
[shapeLayer setPath:path]; 

所以形狀包括三角形,弧形的。

但我有以下問題疊加:

enter image description here

是否可以解決?

回答

3

1)更容易:

CGFloat linesYOffset = 35; 

2)另一種方法:

CGFloat offsetAngle = 15 * M_PI/180; 
CGMutablePathRef path1 = CGPathCreateMutable(); 
CGPathAddArc(path1, nil, 39/2, 30, 39/2-0.1, offsetAngle, -M_PI-offsetAngle, YES); 

CGMutablePathRef path2 = CGPathCreateMutable(); 
CGFloat linesXOffset = 5.5; 
CGFloat linesYOffset = 30; 
CGPathMoveToPoint(path2, nil, linesXOffset, linesYOffset); 
CGPathAddLineToPoint(path2, nil, 39-linesXOffset, linesYOffset); 
CGPathAddLineToPoint(path2, nil,39/2,//X 
        linesYOffset + 600/2-220/2-linesYOffset); 

CAShapeLayer *shapeLayer1 = [CAShapeLayer layer]; 
[shapeLayer1 setPath:path1]; 
CAShapeLayer *shapeLayer2 = [CAShapeLayer layer]; 
[shapeLayer2 setPath:path2]; 

CAShapeLayer* container = [CAShapeLayer layer]; 
[container addSublayer:shapeLayer1]; 
[container addSublayer:shapeLayer2]; 
+0

謝謝,完全相同製成2 :) –