構(gòu)造各種各樣的圖形? UIBezierPath(用來指定繪制圖形路徑)和CAShapeLayer(根據(jù)路徑繪制圖形)
UIBezierPath
- 添加直線
- (void)addLineToPoint:(CGPoint)point;
- 添加二次貝賽爾曲線
- (void)addQuadCurveToPoint:(CGPoint)endPoint controlPoint:(CGPoint)controlPoint;

image.png
- 三次貝賽爾曲線
- (void)addCurveToPoint:(CGPoint)endPoint controlPoint1:(CGPoint)controlPoint1
controlPoint2:(CGPoint)controlPoint2;
兩個喵點(diǎn)
繪制三個邊的矩形
//矩形框.
CGFloat beginX = 60;
CGFloat beginY = 200;
CGFloat lineWidth = 3;
CGFloat horizontalLineWidth = 230;
CGFloat endX = beginX+horizontalLineWidth+lineWidth;
CGFloat verticalLineHeight = 100;
CGFloat endY = beginY+verticalLineHeight+2*lineWidth;
_trackLayer = [CAShapeLayer layer];
[self.contentImgView.layer addSublayer:_trackLayer];
_trackLayer.fillColor = [UIColor clearColor].CGColor;
_trackLayer.strokeColor = [UIColor redColor].CGColor;
_trackLayer.opacity = 1.0f;
_trackLayer.lineCap = kCALineCapRound;//路徑的終點(diǎn)形狀.
_trackLayer.lineJoin = kCALineJoinRound;//路徑的連接點(diǎn)形狀
_trackLayer.lineWidth = lineWidth;
//這里僅僅設(shè)置好路徑即可. 其他的屬性如lineWidth、lineCapStyle等可通過CAShapeLayer設(shè)置
_bezierPath = [UIBezierPath bezierPath];
/*
_bezierPath.lineWidth = lineWidth;
_bezierPath.lineCapStyle = kCGLineCapRound;
_bezierPath.lineJoinStyle = kCGLineJoinRound;
通過CAShapeLayer設(shè)置
*/
[_bezierPath moveToPoint:CGPointMake(beginX, beginY)];
[_bezierPath addLineToPoint:CGPointMake(beginX+horizontalLineWidth, beginY)];
[_bezierPath addQuadCurveToPoint:CGPointMake(endX, beginY+lineWidth) controlPoint:CGPointMake(endX, beginY)];
[_bezierPath addLineToPoint:CGPointMake(endX, endY-lineWidth)];
[_bezierPath addQuadCurveToPoint:CGPointMake(endX-lineWidth, endY) controlPoint:CGPointMake(endX, endY)];
[_bezierPath addLineToPoint:CGPointMake(beginX, endY)];
_trackLayer.path = _bezierPath.CGPath;

image.png