iOS之画饼图
2015-06-01 20:45
288 查看
iOS之画饼图
1.效果图如下
2.画饼图实现步骤如下:
1.在main.storyboard中拖入一个UIView控件,并设置其Custom Class 为HMPieView。如下图2.新建HMPieView类
// // HMPieView.h // 03-饼图 // #import <UIKit/UIKit.h> @interface HMPieView : UIView @end
// // HMPieView.m // 03-饼图 // #import "HMPieView.h" #import "UIColor+Random.h" @implementation HMPieView - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { // Initialization code } return self; } // Only override drawRect: if you perform custom drawing. // An empty implementation adversely affects performance during animation. - (void)drawRect:(CGRect)rect { // Drawing code NSArray *data = @[@25,@25,@50]; // 1.获取上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(); // 2.拼接路径 CGPoint center = CGPointMake(125, 125); CGFloat radius = 120; CGFloat startA = 0; CGFloat angle = 0; CGFloat endA = 0; for (NSNumber *number in data) { // 2.拼接路径 startA = endA; angle = number.intValue / 100.0 * M_PI * 2; endA = startA + angle; UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:startA endAngle:endA clockwise:YES]; [path addLineToPoint:center]; [[UIColor randomColor] set]; // 把路径添加上下文 CGContextAddPath(ctx, path.CGPath); // 渲染 CGContextFillPath(ctx); } } - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { CGFloat a = arc4random_uniform(6); //CGFloat a = arc4random()%6; NSLog(@"随机数--%f",a); [self setNeedsDisplay]; } - (void)drawPie { // 1.获取上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(); // 2.拼接路径 CGPoint center = CGPointMake(125, 125); CGFloat radius = 120; CGFloat startA = 0; CGFloat angle = 0; CGFloat endA = 0; // 第一个扇形 angle = 25 / 100.0 * M_PI * 2; endA = startA + angle; UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:startA endAngle:endA clockwise:YES]; [path addLineToPoint:center]; // 添加到上下文 CGContextAddPath(ctx, path.CGPath); [[UIColor redColor] set]; // 渲染 CGContextFillPath(ctx); // 第二个扇形 startA = endA; angle = 25 / 100.0 * M_PI * 2; endA = startA + angle; UIBezierPath *path1 = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:startA endAngle:endA clockwise:YES]; [path1 addLineToPoint:center]; // 添加到上下文 CGContextAddPath(ctx, path1.CGPath); [[UIColor greenColor] set]; // 渲染 CGContextFillPath(ctx); // 第三个扇形 startA = endA; angle = 50 / 100.0 * M_PI * 2; endA = startA + angle; UIBezierPath *path2 = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:startA endAngle:endA clockwise:YES]; [path2 addLineToPoint:center]; // 添加到上下文 CGContextAddPath(ctx, path2.CGPath); [[UIColor blueColor] set]; // 渲染 CGContextFillPath(ctx); } @end
3.新建UIColor+Random类
// // UIColor+Random.h // 03-饼图 // #import <UIKit/UIKit.h> @interface UIColor (Random) + (UIColor *)randomColor; @end
// // UIColor+Random.m // 03-饼图 // #import "UIColor+Random.h" @implementation UIColor (Random) + (UIColor *)randomColor { /* 颜色有两种表现形式 RGB RGBA RGB 24 R,G,B每个颜色通道8位 8的二进制 255 R,G,B每个颜色取值 0 ~255 120 / 255.0 */ CGFloat r = arc4random_uniform(256) / 255.0; CGFloat g = arc4random_uniform(256) / 255.0; CGFloat b = arc4random_uniform(256) / 255.0; return [UIColor colorWithRed:r green:g blue:b alpha:1]; } @end
相关文章推荐
- iOS开发 之iOS沙盒(sandbox)机制和文件操作(一)
- iOS 内核堆利用技术点之 mach_msg ool
- ios指南针的实现(CoreLocation)
- ios 根据类名获取类名的属性
- iOS中NSLog输出格式大全
- <iOS>关于Xcode上的Other linker flags
- 【iOS百度地图系列_1】在地图上定位当前位置
- IOS高级开发~Runtime(四)
- iOS企业开发In House ipa发布流程
- 【iOS百度地图系列_0】百度地图的配置及实现基本地图
- iOS上的死锁
- ios应用开发前的准备
- iOS shareSDK进行第三方登录
- iOS解析数据判断nil NULL Null的方法
- 使用Xcode和Instruments调试解决iOS内存泄露
- iOS 清理某一个cookies 或者全部 cookies
- 获取iOS设备上崩溃日志(Crash Log)的方法
- [iOS Crash文件分析]-如何使用symbolicatecrash工具
- IOS ,简单的图片浏览器
- IOS开发 - 如何获取不变的UDID