二、基本圖形繪制-餅圖

pie.gif

這是看了小馬哥的視頻整理的筆記。
這是看了小馬哥的視頻整理的筆記。
這是看了小馬哥的視頻整理的筆記。(怕被罵說(shuō)抄襲)

最終的效果如上圖所示,點(diǎn)的有點(diǎn)快。

首先,確定一點(diǎn),餅狀圖是由一個(gè)扇形挨著一個(gè)扇形拼成的。
數(shù)據(jù)源NSArray *arr = [];
設(shè)扇形的起點(diǎn)角度為CGFloat startA;
扇形的弧度為angle = [arr[i] doubleValue] / total * M_PI * 2;
那么扇形的終點(diǎn)弧度為 endA = startA + angle;

使用UIBezierPath畫(huà)扇形的核心代碼如下

UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:redius startAngle:startA endAngle:endA clockwise:YES];
[path addLineToPoint:center];
[[self color]set];
[path fill];

難道說(shuō)餅狀圖由幾部分,我們就要?jiǎng)?chuàng)建幾個(gè)UIBezierPath嗎?當(dāng)然不能夠啊。
我們?cè)谧远x的view的drawRect方法中進(jìn)行扇形的繪制如下:

- (void)drawRect:(CGRect)rect {
// Drawing code
NSArray *arr = [self arr];
CGFloat redius = rect.size.width * 0.5;
CGPoint center = CGPointMake(redius, redius);

CGFloat startA = 0;
CGFloat angle = 0;
CGFloat endA = 0;

for (int i = 0 ; i < arr.count; i ++) {
    startA = endA;
    angle = [arr[i] doubleValue] / 100.0 * M_PI * 2;
    endA = startA + angle;
    UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:redius startAngle:startA endAngle:endA clockwise:YES];
    [path addLineToPoint:center];
    [[self color]set];
    [path fill];
  }
}
  • 產(chǎn)生一個(gè)隨機(jī)數(shù)組來(lái)做為餅狀圖的數(shù)據(jù)源
-(NSArray *)arr{
    int total = 100;
    int temp = 0;

    NSMutableArray * arr= [NSMutableArray array];
    for (int i = 0; i < 9; i++) {
        temp = arc4random_uniform(total);
        [arr addObject:@(temp)];
        total -= temp;
    }//在這里需要進(jìn)行判斷total是因?yàn)?,隨機(jī)出來(lái)的這9個(gè)數(shù)的和不一定正好是100 ,所以需要進(jìn)行判斷total
    if (total) {
        [arr addObject:@(total)];
    }
    return arr;
}
  • 獲取隨機(jī)顏色
-(UIColor *)color{
    CGFloat red = arc4random_uniform(256.0)/255.0;
    CGFloat green = arc4random_uniform(256.0)/255.0;
    CGFloat blue = arc4random_uniform(256.0)/255.0;

    return [UIColor colorWithRed:red green:green blue:blue alpha:1];
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容