您的位置:首页 > 其它

源码0305-画饼图-柱状图-绘制文字和图片

2017-04-07 11:42 381 查看




//  PieView.m
//  05-画饼图
#import "PieView.h"
@implementation PieView
- (NSArray *)arrRandom
{
int totoal = 100;

NSMutableArray *arrM = [NSMutableArray array];

int temp = 0; // 30 40 30
for (int i = 0; i < arc4random_uniform(10) + 1; i++) {
temp = arc4random_uniform(totoal) + 1;

// 100 1~100

// 随机出来的临时值等于总值,直接退出循环,因为已经把总数分配完毕,没必要在分配。

[arrM addObject:@(temp)];

// 解决方式:当随机出来的数等于总数直接退出循环。
if (temp == totoal) {
break;
}

totoal -= temp;

}
// 100 30 1~100
// 70 40 0 ~ 69 1 ~ 70
// 30 25
// 5

if (totoal) {
[arrM addObject:@(totoal)];
}

return arrM;
}
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
// Drawing code

NSArray *arr = [self arrRandom];
CGFloat radius = rect.size.width * 0.5;
CGPoint center = CGPointMake(radius, radius);

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

for (int i = 0; i < arr.count; i++) {
startA = endA;
angle = [arr[i] integerValue] / 100.0 * M_PI * 2;
endA = startA + angle;
UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:startA endAngle:endA clockwise:YES];

[path addLineToPoint:center];

[[self colorRandom] set];

[path fill];
}

}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self setNeedsDisplay];
}
- (UIColor *)colorRandom
{
// 0 ~ 255 / 255
// OC:0 ~ 1
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];
}

- (void)draw
{
CGFloat radius = self.bounds.size.width * 0.5;
CGPoint center = CGPointMake(radius, radius);

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];

// 描边和填充通用
[[UIColor redColor] set];

[path fill];

// 第二个扇形
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];

// 描边和填充通用
[[UIColor greenColor] set];

[path1 fill];

// 第二个扇形
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];

// 描边和填充通用
[[UIColor blueColor] set];

[path2 fill];

}

@end


//  PieView.h
//  05-画饼图
#import <UIKit/UIKit.h>

@interface PieView : UIView

@end


06柱状图



//  BarView.m
//  06-柱状图
#import "BarView.h"

@implementation BarView

// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
// Drawing code

NSArray *arr = [self arrRandom];

CGFloat x = 0;
CGFloat y = 0;
CGFloat w = 0;
CGFloat h = 0;

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

w = rect.size.width / (2 * arr.count - 1);
x = 2 * w * i;
h = [arr[i] floatValue] / 100.0 * rect.size.height;
y = rect.size.height - h;

UIBezierPath *path = [UIBezierPath bezierPathWithRect:CGRectMake(x, y, w, h)];

[[self colorRandom] set];

[path fill];

}

}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self setNeedsDisplay];
}
- (NSArray *)arrRandom
{
int totoal = 100;

NSMutableArray *arrM = [NSMutableArray array];

int temp = 0; // 30 40 30
for (int i = 0; i < arc4random_uniform(10) + 1; i++) {
temp = arc4random_uniform(totoal) + 1;

// 100 1~100

// 随机出来的临时值等于总值,直接退出循环,因为已经把总数分配完毕,没必要在分配。

[arrM addObject:@(temp)];

// 解决方式:当随机出来的数等于总数直接退出循环。
if (temp == totoal) {
break;
}

totoal -= temp;

}
// 100 30 1~100
// 70 40 0 ~ 69 1 ~ 70
// 30 25
// 5

if (totoal) {
[arrM addObject:@(totoal)];
}

return arrM;
}

- (UIColor *)colorRandom
{
// 0 ~ 255 / 255
// OC:0 ~ 1
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


07-绘制文字和图片







//  ViewController.m
//  07-绘制文字和图片
#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *labelView;

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSMutableDictionary *textDict = [NSMutableDictionary dictionary];

// 设置文字颜色
textDict[NSForegroundColorAttributeName] = [UIColor redColor];

// 设置文字字体
textDict[NSFontAttributeName] = [UIFont systemFontOfSize:30];

// 设置文字的空心颜色和宽度
textDict[NSStrokeWidthAttributeName] = @3;

textDict[NSStrokeColorAttributeName] = [UIColor yellowColor];

// 创建阴影对象
NSShadow *shadow = [[NSShadow alloc] init];
shadow.shadowColor = [UIColor greenColor];
shadow.shadowOffset = CGSizeMake(4, 4);
shadow.shadowBlurRadius = 3;
textDict[NSShadowAttributeName] = shadow;
// 创建富文本字符串
NSAttributedString *strArr = [[NSAttributedString alloc] initWithString:@"asdlsajkldl" attributes:textDict];
_labelView.attributedText =  strArr;

// 只能计算普通文本框
//    [_labelView sizeToFit];
}

- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

@end


//  DrawView.m
//  07-绘制文字和图片
#import "DrawView.h"

@implementation DrawView

// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
// Drawing code

// 超出裁剪区域的内容全部裁剪掉
// 注意:裁剪必须放在绘制之前
UIRectClip(CGRectMake(0, 0, 50, 50));

UIImage *image = [UIImage imageNamed:@"001"];

// 默认绘制的内容尺寸跟图片尺寸一样大
//    [image drawAtPoint:CGPointZero];

//    [image drawInRect:rect];
// 绘图
[image drawAsPatternInRect:rect];

}

- (void)awakeFromNib{
//    UIImage *image = [UIImage imageNamed:@"001"];
//
//    // 默认绘制的内容尺寸跟图片尺寸一样大
//    //    [image drawAtPoint:CGPointZero];
//
//
//    //    [image drawInRect:rect];
//    // 绘图
//    [image drawAsPatternInRect:self.bounds];
}

- (void)drawText
{
// 绘制文字

NSString *str = @"asfdsfsdfasfdsfsdfasfdsfsdfasfdsfsdfasfdsfsdfasfdsfsdfasfdsfsdfasfdsfsdfasfdsfsdfasfdsfsdfasfdsfsdfasfdsfsdfasfdsfsdf";
// 不会换行
//    [str drawAtPoint:CGPointZero withAttributes:nil];

[str drawInRect:self.bounds withAttributes:nil];

}
- (void)attrText
{

// 绘制文字

NSString *str = @"asfdsfsdf";

// 文字的起点
// Attributes:文本属性

NSMutableDictionary *textDict = [NSMutableDictionary dictionary];

// 设置文字颜色
textDict[NSForegroundColorAttributeName] = [UIColor redColor];

// 设置文字字体
textDict[NSFontAttributeName] = [UIFont systemFontOfSize:30];

// 设置文字的空心颜色和宽度

textDict[NSStrokeWidthAttributeName] = @3;

textDict[NSStrokeColorAttributeName] = [UIColor yellowColor];

// 创建阴影对象
NSShadow *shadow = [[NSShadow alloc] init];
shadow.shadowColor = [UIColor greenColor];
shadow.shadowOffset = CGSizeMake(4, 4);
shadow.shadowBlurRadius = 3;
textDict[NSShadowAttributeName] = shadow;

// 富文本:给普通的文字添加颜色,字体大小
[str drawAtPoint:CGPointZero withAttributes:textDict];
}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐