これは、両端に矢印で線を描くために使用する方法です。これは、線に矢印を描く数学を示しています。これらのメソッドを特定のニーズに合わせて簡単に変更できるはずです。
-(void)drawDoubleArrowLineInContext:(CGContextRef)inContext fromPoint:(CGPoint)inFromPoint toPoint:(CGPoint)inToPoint {
CGContextSetLineWidth(inContext, 1.0 );
CGContextSetStrokeColorWithColor( inContext, [UIColor blackColor].CGColor );
CGContextSetFillColorWithColor( inContext, [UIColor blackColor].CGColor );
CGContextBeginPath( inContext );
CGContextMoveToPoint( inContext, inFromPoint.x, inFromPoint.y );
CGContextAddLineToPoint( inContext, inToPoint.x, inToPoint.y );
CGContextClosePath( inContext );
CGContextDrawPath( inContext, kCGPathStroke );
[self drawArrowInContext:inContext atPoint:inFromPoint pointFrom:inToPoint];
[self drawArrowInContext:inContext atPoint:inToPoint pointFrom:inFromPoint];
}
-(void)drawArrowInContext:(CGContextRef)inContext atPoint:(CGPoint)inTipPoint pointFrom:(CGPoint)inFromPoint {
const CGFloat kArrowHeight = 15;
const CGFloat kArrowBaseHalfWidth = 5;
double arrowAngle = atan2( (inFromPoint.y - inTipPoint.y), (inFromPoint.x - inTipPoint.x ) );
CGContextBeginPath( inContext );
CGContextMoveToPoint( inContext, inTipPoint.x, inTipPoint.y );
CGContextAddLineToPoint( inContext, (inTipPoint.x + kArrowHeight*cos(arrowAngle)) - kArrowBaseHalfWidth*sin(arrowAngle),
(inTipPoint.y + kArrowHeight*sin(arrowAngle)) + kArrowBaseHalfWidth*cos(arrowAngle));
CGContextAddLineToPoint( inContext, (inTipPoint.x + kArrowHeight*cos(arrowAngle)) + kArrowBaseHalfWidth*sin(arrowAngle),
(inTipPoint.y + kArrowHeight*sin(arrowAngle)) - kArrowBaseHalfWidth*cos(arrowAngle));
CGContextAddLineToPoint( inContext, inTipPoint.x, inTipPoint.y );
CGContextClosePath( inContext );
CGContextDrawPath( inContext, kCGPathFillStroke );
}