IOS 繪製圓餅圖 簡單實現的代碼有注釋,ios

來源:互聯網
上載者:User

IOS 繪製圓餅圖 簡單實現的代碼有注釋,ios

今天為大家帶來IOS 繪圖中圓餅的實現  

.h檔案

#import <UIKit/UIKit.h>

 

@interface ZXCircle : UIView

 

@end

.m檔案

#import "ZXCircle.h"

 

@implementation ZXCircle

-(void)drawRect:(CGRect)rect{

    CGFloat w = self.bounds.size.width;

    CGFloat h = self.bounds.size.height;

    

    //資料數組

    NSArray *array = @[@1,@2,@3,@4,@5,@6,@7,@8,@9,@10];

    //顏色數組

    NSArray *colorArray = @[[UIColor redColor], [UIColor greenColor], [UIColor yellowColor],[UIColor cyanColor],[UIColor blueColor],[UIColor lightGrayColor],[UIColor grayColor],[UIColor darkGrayColor],[UIColor magentaColor],[UIColor orangeColor]];

   //下面這個迴圈是為了假如只有幾種顏色 ,但是資料非常多的情況下 ,迴圈使用顏色的演算法

  //建立的顏色數組

    NSMutableArray * colorArr=[NSMutableArray new];

   //這個迴圈是 只顯示顏色數組中前三個的顏色,%後面的數 是根據你的顏色數組中有多少顏色

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

        [colorArr addObject:colorArray[i%10]];

    }

    CGContextRef ctx =UIGraphicsGetCurrentContext();

    

    //中心點

    CGPoint center = CGPointMake(w * 0.5, h * 0.5);

    //半徑

    CGFloat radius = w * 0.3 - 5;

    

    //起點角度

    CGFloat startA = 0;

    //終點角度

    CGFloat endA =M_PI;

    //掃過角度範圍

    CGFloat angle = 0;

    

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

        //這句話是為了畫完其中一個之後第二個的起點就是第一個的終點,這裡面M_PI代表的是180度 55這個數值是資料來源的總和

        startA = endA;

        angle = [array[i] integerValue] / 55 * M_PI * 2;

        endA = startA + angle;

        

        //弧形路徑

        //clockwise: 是否是按照時鐘的方向旋轉(是否順時針)

        UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:startA endAngle:endA clockwise:YES];

        //串連中心, 構成扇形

        [path addLineToPoint:center];

        

        //填充顏色

        [(UIColor *)colorArr[i] set];

        

        CGContextAddPath(ctx, path.CGPath);

        

        // 將上下文渲染到視圖

        CGContextFillPath(ctx);

    }

}

@end

 如下: 請大家鑒賞這個非常簡單的圓餅圖 ,希望對你們以後的開發有所協助!!謝謝!!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.