iOS 柱状图

柱状图其实就是画矩形,比如我们需要实现下面这个效果
这里写图片描述
画图思路:
1、根据数据源的个数来判断需要画多少个矩形(比如:25,15,30,10,20,需要画5个矩形)
2、画在柱状图我们只需要确定每一个柱状图的(x,y,width,height)
3、因为每个柱状图的宽是相同的,width =ViewWidth / (2 *array.count - 1)
4、根据宽度可以知道每个柱状图的x,x = 2 * width * i,i代表第几个
5、每个柱状图的高度需要判断柱状图的占整个View高度的多少,如果是柱状图高度为100,那么它的高度就等于View的高度,height = array[i] / 100 * Viewheight
6、每个柱状图的y值,y = ViewHeight - height

- (void)drawRect:(CGRect)rect{

    //数据源
    NSArray *numberArray = @[@25,@15,@30,@10,@20];
    NSArray *colorArray = @[[UIColor redColor],[UIColor yellowColor],[UIColor purpleColor],[UIColor greenColor],[UIColor orangeColor]];

    CGFloat x = 0;
    CGFloat y = 0;
    CGFloat w = 0;
    CGFloat h = 0;

    for (int i = 0; i < numberArray.count; i ++) {

        w = rect.size.width / (2 *numberArray.count - 1);
        x = 2 * w * i;
        h = [numberArray[i] floatValue] / 100 * rect.size.height;
        y = rect.size.height - h;
        UIBezierPath *path = [UIBezierPath bezierPathWithRect:CGRectMake(x, y, w, h)];

        [colorArray[i] setFill];

        [path fill];

    }

}

最后,附上相关的demo,Git:(https://github.com/hejiasu/Drawing)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值