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


    //  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
    本人无商业用途,仅仅是学习做个笔记,特别鸣谢小马哥,学习了IOS,另日语学习内容有需要文本和音频请关注公众号:riyuxuexishuji
  • 相关阅读:
    【转载】CSS的inline、block与inline-block
    MySQL常用语法
    JS模态对话框
    CS3常用属性手记
    画布常用手记
    CSS属性常用手记
    H5试题
    window对象常用手记
    js对象常用手记
    常用DOM对象手记
  • 原文地址:https://www.cnblogs.com/laugh/p/6677409.html
Copyright © 2020-2023  润新知