#import <UIKit/UIKit.h>
@interface GWLView : UIView
/** 属性 */
@property (nonatomic,strong) NSArray *values;
@end
#import "GWLView.h"
@implementation GWLView
-(void)drawRect:(CGRect)rect
{
// 如果宽高不一致 那么直接不让用
if (!(rect.size.width == rect.size.height))
{
//[NSException raise:@"先看看宽高是否相等" format:@"宽高不相等"];
// 抛出异常
NSException *ex = [NSException exceptionWithName:@"先看看宽高是否相等" reason:@"宽高不相等" userInfo:nil];
[ex raise];
return;
}
CGFloat start = 0;
CGFloat end = 0;
for (int i = 0; i < self.values.count; i ++)
{
end = M_PI * 2 * [self.values[i] floatValue] + start;
UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:[self arcCenter] radius:MIN(self.bounds.size.width, self.bounds.size.height) * 0.5 - 10 startAngle:start endAngle:end clockwise:1];
// 画扇形的时候需要往中心连一条线
[path addLineToPoint:[self arcCenter]];
// 随机颜色
[[self randomColor] set];
[path fill];
start = end;
}
}
- (CGPoint)arcCenter
{
return CGPointMake(self.bounds.size.width * 0.5, self.bounds.size.height * 0.5);
}
- (UIColor *)randomColor
{
return [UIColor colorWithRed:((float)arc4random_uniform(256) / 255.0) green:((float)arc4random_uniform(256) / 255.0) blue:((float)arc4random_uniform(256) / 255.0) alpha:1];
}
@end
调用
GWLView *pieView = [[GWLView alloc] initWithFrame:CGRectMake(60, 100, 300, 300)];
pieView.values = @[@0.3,@0.2,@0.1,@0.05,@0.35];
[self.view addSubview:pieView];
效果图![](https://i-blog.csdnimg.cn/blog_migrate/283dfec48f2925b5f8a242c36350b1d1.jpeg)