99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀iOS使用Charts框架繪制—餅狀圖
iOS使用Charts框架繪制—餅狀圖
2020-04-28
收藏

首先先看一下效果:


iOS使用Charts框架繪制—<a href='/map/bingzhuangtu/' style='color:#000;font-size:inherit;'>餅狀圖</a>


一、創(chuàng)建餅狀圖對象


創(chuàng)建餅狀圖對象用到類是PieChartView.h, 代碼如下:


self.pieChartView = [[PieChartView alloc] init];

self.pieChartView.backgroundColor = BgColor;

[self.view addSubview:self.pieChartView];

[self.pieChartView mas_makeConstraints:^(MASConstraintMaker *make) {

make.size.mas_equalTo(CGSizeMake(300, 300));

make.center.mas_equalTo(self.view);

}];


二、設(shè)置餅狀圖外觀樣式


1. 基本樣式


[self.pieChartView setExtraOffsetsWithLeft:30 top:0 right:30 bottom:0];//餅狀圖距離邊緣的間隙

self.pieChartView.usePercentValuesEnabled = YES;//是否根據(jù)所提供的數(shù)據(jù), 將顯示數(shù)據(jù)轉(zhuǎn)換為百分比格式

self.pieChartView.dragDecelerationEnabled = YES;//拖拽餅狀圖后是否有慣性效果

self.pieChartView.drawSliceTextEnabled = YES;//是否顯示區(qū)塊文本


2. 設(shè)置餅狀圖中間的空心樣式


空心有兩個圓組成, 一個是hole, 一個是transparentCircle, transparentCircle里面是hole, 所以餅狀圖中間的空心也就是一個同心圓. 代碼如下:


self.pieChartView.drawHoleEnabled = YES;//餅狀圖是否是空心

self.pieChartView.holeRadiusPercent = 0.5;//空心半徑占比

self.pieChartView.holeColor = [UIColor clearColor];//空心顏色

self.pieChartView.transparentCircleRadiusPercent = 0.52;//半透明空心半徑占比

self.pieChartView.transparentCircleColor = [UIColor colorWithRed:210/255.0 green:145/255.0 blue:165/255.0 alpha:0.3];//半透明空心的顏色


3. 設(shè)置餅狀圖中心的文本


餅狀圖是空心樣式時, 可以在餅狀圖中心添加文本, 添加文本有兩種方法. 一種方法是使用centerText 屬性添加, 這種方法不能設(shè)置字體顏色、大小等. 另一種方法是使用centerAttributedText屬性添加, 這種方法添加的富文本, 因此就可以對字體進行進一步美化了. 代碼如下:


if (self.pieChartView.isDrawHoleEnabled == YES) {

self.pieChartView.drawCenterTextEnabled = YES;//是否顯示中間文字

//普通文本

// self.pieChartView.centerText = @"餅狀圖";//中間文字

//富文本

NSMutableAttributedString *centerText = [[NSMutableAttributedString alloc] initWithString:@"餅狀圖"];

[centerText setAttributes:@{NSFontAttributeName: [UIFont boldSystemFontOfSize:16],

NSForegroundColorAttributeName: [UIColor orangeColor]}

range:NSMakeRange(0, centerText.length)];

self.pieChartView.centerAttributedText = centerText;

}


4. 設(shè)置餅狀圖描述


self.pieChartView.descriptionText = @"餅狀圖示例";

self.pieChartView.descriptionFont = [UIFont systemFontOfSize:10];

self.pieChartView.descriptionTextColor = [UIColor grayColor];


5. 設(shè)置餅狀圖圖例樣式


self.pieChartView.legend.maxSizePercent = 1;//圖例在餅狀圖中的大小占比, 這會影響圖例的寬高

self.pieChartView.legend.formToTextSpace = 5;//文本間隔

self.pieChartView.legend.font = [UIFont systemFontOfSize:10];//字體大小

self.pieChartView.legend.textColor = [UIColor grayColor];//字體顏色

self.pieChartView.legend.position = ChartLegendPositionBelowChartCenter;//圖例在餅狀圖中的位置

self.pieChartView.legend.form = ChartLegendFormCircle;//圖示樣式: 方形、線條、圓形

self.pieChartView.legend.formSize = 12;//圖示大小


三、為餅狀圖提供數(shù)據(jù)


餅狀圖提供數(shù)據(jù), 首先需要創(chuàng)建兩個數(shù)組yVals和xVals, yVals數(shù)組存放餅狀圖每個區(qū)塊的數(shù)據(jù), xVals存放的是每個區(qū)塊的名稱或者描述。


接著需要用PieChartDataSet.h類創(chuàng)建dataSet對象, 創(chuàng)建時將yVals放進去。


然后需要用PieChartData.h類創(chuàng)建data對象, 創(chuàng)建時將xVals和dataSet對象放進去。


最后直接把data對象賦值給餅狀圖的data屬性即可. 創(chuàng)建data對象代碼如下:


- (PieChartData *)setData{

double mult = 100;

int count = 5;//餅狀圖總共有幾塊組成

//每個區(qū)塊的數(shù)據(jù)

NSMutableArray *yVals = [[NSMutableArray alloc] init];

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

double randomVal = arc4random_uniform(mult + 1);

BarChartDataEntry *entry = [[BarChartDataEntry alloc] initWithValue:randomVal xIndex:i];

[yVals addObject:entry];

}

//每個區(qū)塊的名稱或描述

NSMutableArray *xVals = [[NSMutableArray alloc] init];

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

NSString *title = [NSString stringWithFormat:@"part%d", i+1];

[xVals addObject:title];

}

//dataSet

PieChartDataSet *dataSet = [[PieChartDataSet alloc] initWithYVals:yVals label:@""];

dataSet.drawValuesEnabled = YES;//是否繪制顯示數(shù)據(jù)

NSMutableArray *colors = [[NSMutableArray alloc] init];

[colors addObjectsFromArray:ChartColorTemplates.vordiplom];

[colors addObjectsFromArray:ChartColorTemplates.joyful];

[colors addObjectsFromArray:ChartColorTemplates.colorful];

[colors addObjectsFromArray:ChartColorTemplates.liberty];

[colors addObjectsFromArray:ChartColorTemplates.pastel];

[colors addObject:[UIColor colorWithRed:51/255.f green:181/255.f blue:229/255.f alpha:1.f]];

dataSet.colors = colors;//區(qū)塊顏色

dataSet.sliceSpace = 0;//相鄰區(qū)塊之間的間距

dataSet.selectionShift = 8;//選中區(qū)塊時, 放大的半徑

dataSet.xValuePosition = PieChartValuePositionInsideSlice;//名稱位置

dataSet.yValuePosition = PieChartValuePositionOutsideSlice;//數(shù)據(jù)位置

//數(shù)據(jù)與區(qū)塊之間的用于指示的折線樣式

dataSet.valueLinePart1OffsetPercentage = 0.85;//折線中第一段起始位置相對于區(qū)塊的偏移量, 數(shù)值越大, 折線距離區(qū)塊越遠

dataSet.valueLinePart1Length = 0.5;//折線中第一段長度占比

dataSet.valueLinePart2Length = 0.4;//折線中第二段長度最大占比

dataSet.valueLineWidth = 1;//折線的粗細

dataSet.valueLineColor = [UIColor brownColor];//折線顏色

//data

PieChartData *data = [[PieChartData alloc] initWithXVals:xVals dataSet:dataSet];

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];

formatter.numberStyle = NSNumberFormatterPercentStyle;

formatter.maximumFractionDigits = 0;//小數(shù)位數(shù)

formatter.multiplier = @1.f;

[data setValueFormatter:formatter];//設(shè)置顯示數(shù)據(jù)格式

[data setValueTextColor:[UIColor brownColor]];

[data setValueFont:[UIFont systemFontOfSize:10]];

return data;

}


運行結(jié)果如下:

iOS使用Charts框架繪制—<a href='/map/bingzhuangtu/' style='color:#000;font-size:inherit;'>餅狀圖</a>


如果不需要空心樣式的餅狀圖, 可以將餅狀圖的drawHoleEnabled賦值為NO, 將中間的文本去掉即可, 代碼如下:


self.pieChartView.drawHoleEnabled = NO;


效果如下:


iOS使用Charts框架繪制—<a href='/map/bingzhuangtu/' style='color:#000;font-size:inherit;'>餅狀圖</a>


每個區(qū)塊之間如果需要間距, 可以通過dataSet對象的sliceSpace屬性設(shè)置, 代碼如下:


dataSet.sliceSpace = 3;


效果如下:


iOS使用Charts框架繪制—<a href='/map/bingzhuangtu/' style='color:#000;font-size:inherit;'>餅狀圖</a>


由于屬性較多, 其它效果可以自行嘗試。

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }