Quantcast
Channel: CSDN博客移动开发推荐文章
Viewing all articles
Browse latest Browse all 5930

IOS端K线系列之K线-绘制蜡烛图

$
0
0

k线系列目录

查看目录请点击这儿


补充知识

K线虽然看上去复杂,但仔细观察就会知道几乎所有的k线无非由以下几种组成:

(1)蜡烛

蜡烛

(2)OHLC

OHLC

(3)线段

线段

(4)带状

带状

(5)圆形

圆形

除此之外还有其他的,都是比较少见的。

蜡烛绘制

补充了一点知识后,我们来进入主题。绘制上述所说的第一种,蜡烛。如果不懂什么是蜡烛,点这里补一下基础知识。

首先来分解蜡烛,其实它是由一个长方形加上两根线段(如果长方形是非空心的话,就是一根)。长方形是由开盘价坐标点、收盘价坐标点计算生成,线段是由最高价坐标点、最低价坐标点连接而成。

所以代码逻辑也就很简单了:

  1. 绘制一个长方形(实心)
  2. 然后再绘制一条线段

OK!上代码:

/**
 生成蜡烛Layer

 @param model 蜡烛坐标模型
 @return 返回layer
 */
+ (CAShapeLayer *)getCandleLayerWithPointModel:(YKCandlePointModel *)model
{
    //判断是否为涨跌
    BOOL isRed = model.oPoint.y >= model.cPoint.y ? YES : NO;

    //生成柱子的rect
    CGRect candleFrame = CGRectMake(isRed ? model.cPoint.x - 6 : model.oPoint.x-6,isRed ? model.cPoint.y : model.oPoint.y,12,ABS(model.oPoint.y - model.cPoint.y));

    UIBezierPath *path = [UIBezierPath bezierPathWithRect:candleFrame];

    //绘制上下影线
    [path moveToPoint:model.lPoint];
    [path addLineToPoint:model.hPoint];

    CAShapeLayer *layer = [CAShapeLayer layer];
    layer.path = path.CGPath;

    //判断涨跌来设置颜色
    if (isRed)
    {
        //涨,设置红色
        layer.strokeColor = [UIColor redColor].CGColor;
        layer.fillColor = [UIColor redColor].CGColor;

    } else
    {
        //跌,设置绿色
        layer.strokeColor = [UIColor greenColor].CGColor;
        layer.fillColor = [UIColor greenColor].CGColor;
    }

    return layer;
}

代码效果如下:

蜡烛

最后把Demo献上,点这里下载。

作者:yunkai666 发表于2017/5/24 23:21:41 原文链接
阅读:153 评论:0 查看评论

Viewing all articles
Browse latest Browse all 5930

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>