swift画饼状图

//
//  Pie.swift
//  小黄人
//
//  Created by admin on 16/1/23.
//  Copyright © 2016年 jin. All rights reserved.
//

import UIKit

class Pie: UIView {
    var sections:[CGFloat] = [20,32,55,66,10,66,77,66,33,77,92,11,12]
    var colors:[UIColor] = [UIColor.whiteColor(),UIColor.blackColor(),UIColor.blueColor(),UIColor.brownColor(),UIColor.darkGrayColor(),UIColor.darkTextColor(),UIColor.redColor(),UIColor.purpleColor(),UIColor.grayColor(),UIColor.greenColor(),UIColor.yellowColor(),UIColor.orangeColor(),UIColor.magentaColor(),UIColor.lightGrayColor(),UIColor.purpleColor()]
    override func drawRect(rect: CGRect) {
        let pie = UIGraphicsGetCurrentContext()
        var sum:CGFloat = 0
        sections.forEach({sum += $0})
        print(sum)
        let radius:CGFloat = 100
        let piePoint = CGPointMake(radius, radius)
        var startAngle:CGFloat = 0
        var endAngle:CGFloat = 0
        for var i = 0;i < sections.count;i++
        {
            startAngle = endAngle
            endAngle += (sections[i] / sum) * CGFloat(M_PI * 2)
            CGContextMoveToPoint(pie, piePoint.x, piePoint.y)
            CGContextAddArc(pie, radius, radius, radius, startAngle, endAngle, 0)// 颜色显示不正确,原来是顺时针的设置问题,这个坑得记住,0是顺时针
            colors[i].set()
            CGContextFillPath(pie)
        }
    }
}

标签: swift, quartz 2d

添加新评论