蓝懿ios 技术内容交流和学习心得 11.18

原创 2015年11月18日 22:11:10

今天主要是学习绘图的相关知识绘制单线,多条线、绘制图形

都要添加一个类,类名为DrawView

class是UIView,把XIB的VIew的Class改为类名进行关联

1、绘制单线

- (instancetype)initWithFrame:(CGRect)frame

{

    self = [super initWithFrame:frame];

    if (self) {

        self.points = [NSMutableArray array];

    }

    return self;

}

-(void)awakeFromNib{

    self.points = [NSMutableArray array];

    NSLog(@"awakeFromNib");

}

 

 

//控件显示时会执行一次 当执行setNeedsDisplay

- (void)drawRect:(CGRect)rect {

  //*********    绘制固定线的代码

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextMoveToPoint(context, 100, 100);

    CGContextAddLineToPoint(context, 200, 200);

    CGContextAddLineToPoint(context, 375, 0);

    CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);

    CGContextSetLineWidth(context, 3);

      //绘制  kCGPathStroke描边 kCGPathFill填充  kCGPathFillStroke 既填充右描边

    CGContextDrawPath(context, kCGPathStroke);

//  ********************手绘********************

    CGContextRef c = UIGraphicsGetCurrentContext();

    

    for (int i=0; i<<span se-mark="1">self.points.count; i++) {

        CGPoint p = [self.points[i] CGPointValue];

        if (i==0) {

            //第一次把画笔移动到某个位置

            CGContextMoveToPoint(c, p.x, p.y);

        }else{

            CGContextAddLineToPoint(c, p.x, p.y);

        }

        

    }

    CGContextSetStrokeColorWithColor(c, [UIColor redColor].CGColor);

    //绘制

    CGContextDrawPath(c, kCGPathStroke);

    

 

}

-(void)touchesBegan:(NSSet<<span se-mark="1">UITouch *> *)touches withEvent:(UIEvent *)event{

    UITouch *t = [touches anyObject];

    CGPoint p = [t locationInView:self];

    

    [self.points addObject:[NSValue valueWithCGPoint:p]];

    //刷新显示

    [self setNeedsDisplay];

    

}

-(void)touchesMoved:(NSSet<<span se-mark="1">UITouch *> *)touches withEvent:(UIEvent *)event{

    UITouch *t = [touches anyObject];

    CGPoint p = [t locationInView:self];

    

    [self.points addObject:[NSValue valueWithCGPoint:p]];

    //刷新显示

    [self setNeedsDisplay];

}

-(void)touchesEnded:(NSSet<<span se-mark="1">UITouch *> *)touches withEvent:(UIEvent *)event{

    UITouch *t = [touches anyObject];

    CGPoint p = [t locationInView:self];

    

    [self.points addObject:[NSValue valueWithCGPoint:p]];

    //刷新显示

    [self setNeedsDisplay];

}

2、绘制多线

设置line类,可变数组记录所绘制的线,数组初始化

- (instancetype)initWithFrame:(CGRect)frame

{

    self = [super initWithFrame:frame];

    if (self) {

        self.points = [NSMutableArray array];

    }

    return self;

}

-(void)awakeFromNib{

    self.points = [NSMutableArray array];

    NSLog(@"awakeFromNib");

}

 

 

//控件显示时会执行一次 当执行setNeedsDisplay

- (void)drawRect:(CGRect)rect {

  //*********    绘制固定线的代码

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextMoveToPoint(context, 100, 100);

    CGContextAddLineToPoint(context, 200, 200);

    CGContextAddLineToPoint(context, 375, 0);

    CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);

    CGContextSetLineWidth(context, 3);

      //绘制  kCGPathStroke描边 kCGPathFill填充  kCGPathFillStroke 既填充右描边

    CGContextDrawPath(context, kCGPathStroke);

//  ********************手绘********************

    CGContextRef c = UIGraphicsGetCurrentContext();

    

    for (int i=0; i<<span se-mark="1">self.points.count; i++) {

        CGPoint p = [self.points[i] CGPointValue];

        if (i==0) {

            //第一次把画笔移动到某个位置

            CGContextMoveToPoint(c, p.x, p.y);

        }else{

            CGContextAddLineToPoint(c, p.x, p.y);

        }

        

    }

    CGContextSetStrokeColorWithColor(c, [UIColor redColor].CGColor);

    //绘制

    CGContextDrawPath(c, kCGPathStroke);

    

 

}

-(void)touchesBegan:(NSSet<<span se-mark="1">UITouch *> *)touches withEvent:(UIEvent *)event{

    UITouch *t = [touches anyObject];

    CGPoint p = [t locationInView:self];

    

    [self.points addObject:[NSValue valueWithCGPoint:p]];

    //刷新显示

    [self setNeedsDisplay];

    

}

-(void)touchesMoved:(NSSet<<span se-mark="1">UITouch *> *)touches withEvent:(UIEvent *)event{

    UITouch *t = [touches anyObject];

    CGPoint p = [t locationInView:self];

    

    [self.points addObject:[NSValue valueWithCGPoint:p]];

    //刷新显示

    [self setNeedsDisplay];

}

-(void)touchesEnded:(NSSet<<span se-mark="1">UITouch *> *)touches withEvent:(UIEvent *)event{

    UITouch *t = [touches anyObject];

    CGPoint p = [t locationInView:self];

    

    [self.points addObject:[NSValue valueWithCGPoint:p]];

    //刷新显示

    [self setNeedsDisplay];

}

3、绘制图形

- (void)drawRect:(CGRect)rect {

    CGContextRef c = UIGraphicsGetCurrentContext();

     //矩形

//    CGContextAddRect(c, CGRectMake(100, 100, 200, 100));

//    CGContextSetStrokeColorWithColor(c, [UIColor redColor].CGColor);

//    CGContextSetFillColorWithColor(c, [UIColor greenColor].CGColor);

//    CGContextSetLineWidth(c, 5);

//    CGContextDrawPath(c, kCGPathFillStroke);

    //圆形

//    CGContextAddEllipseInRect(c, CGRectMake(100, 100, 100, 100));

//    

//    CGContextDrawPath(c, kCGPathFillStroke);

    

    //绘制扇形

    CGContextMoveToPoint(c, 100, 100);

    // 上下文 中心点  半径 开始 结束 顺逆时针

    CGContextAddArc(c, 100, 100, 50, 0, 90*M_PI/180, 0);

     CGContextDrawPath(c, kCGPathFill);

    

//    绘制图片

    UIImage *image = [UIImage imageNamed:@"0.jpg"];

    

    [image drawInRect:CGRectMake(200, 200, 100, 100)];

    

    //绘制文本

    NSDictionary *dic = @{NSFontAttributeName: [UIFont systemFontOfSize:30],NSForegroundColorAttributeName:[UIColor colorWithRed:135.0/255 green:181.0/255 blue:13.0/255 alpha:1]};

    

    

     [@"hahahaha" drawInRect:CGRectMake(200, 300, 100, 100) withAttributes:dic];

    

}

4、三原色

三原色配色表

色光三原色(加色法)

(红)+(绿)=(黄)

(蓝)+(绿)=(青)

(红)+(蓝)=(品红)

(绿)+(蓝)+(红)=(白)

印刷/颜料三原色(减色法)

(青)+(品红)=(蓝)

(品红)+(黄)=(红)

(黄)+(青)=(绿)

(青)+(品红)+(黄)=(黑) 


- (void)drawRect:(CGRect)rect{

   绘制固定线的代码

   //获取上下文

   CGContextRef context =UIGraphicsGetCurrentContext();

  //画笔移动到某个位置

   CGContextMoveToPoint(context,100, 100);

   //画到某个位置

  CGContextAddLineToPoint(context, 200,200);

  

   CGContextAddLineToPoint(context,375, 0);

   //设置画笔颜色

   CGContextSetStrokeColorWithColor(context,[UIColor redColor].CGColor);

  //设置画笔粗细

  CGContextSetLineWidth(context, 3);

   

   //绘制 kCGPathStroke描边kCGPathFill填充 kCGPathFillStroke 既填充右描边

   CGContextDrawPath(context,kCGPathStroke);

二、制作其它图形

   CGContextRefc= UIGraphicsGetCurrentContext();

    //矩形

//   CGContextAddRect(c, CGRectMake(100, 100, 200,100));

//   CGContextSetStrokeColorWithColor(c, [UIColorredColor].CGColor);

//   CGContextSetFillColorWithColor(c, [UIColorgreenColor].CGColor);

//   CGContextSetLineWidth(c, 5);

//   CGContextDrawPath(c,kCGPathFillStroke);

   //圆形

//   CGContextAddEllipseInRect(c, CGRectMake(100,100, 100, 100));

//   

//   CGContextDrawPath(c,kCGPathFillStroke);

   

   //绘制扇形

//   CGContextMoveToPoint(c, 100, 100);

   // 上下文中心点 半径 开始 结束 顺逆时针

   CGContextAddArc(c,100,100,50,0,90*M_PI/180,0);

    CGContextDrawPath(c,kCGPathFill);

   

//   绘制图片

   UIImage*image = [UIImageimageNamed:@"0.jpg"];

   

   [image drawInRect:CGRectMake(200,200,100,100)];

   

   //绘制文本

   NSDictionary *dic= @{NSFontAttributeName:[UIFont systemFontOfSize:30],NSForegroundColorAttributeName:[UIColorcolorWithRed:135.0/255green:181.0/255blue:13.0/255alpha:1]};

 

    [@"hahahaha"drawInRect:CGRectMake(200,300,100,100)withAttributes:dic];

三、几种数据初始化方法的区别:

初始化方法:

1.init:代码创建对象

2.initWithFrame: 控件特有的方法代码创建控件时执行

3.intWithCoder:sb和xib创建控件时执行  子控件没初始化好

4.aweakFromNib:sb和xib创建控件时执行 子控件初始化好了

​学习ios  重要还是要理清楚思路  在做或者看老师代码的时候 自己多想想为什么  不要自己看着就抄       另外还是要推荐一下 蓝懿IOS这个培训机构  和刘国斌老师刘国斌老师还是很有名气的,听朋友说刘老师成立了蓝懿iOS,,老师讲课方式很独特,能够尽量让每个人都能弄明白,有的比较难懂的地方,如果有的地方还是不懂得话,老师会换个其它方法再讲解,这对于我们这些学习iOS的同学是非常好的,多种方式的讲解会理解得更全面,这个必须得给个赞,嘻嘻,还有就是这里的学习环境很好,很安静,可以很安心的学习,安静的环境是学习的基础,小班讲课,每个班20几个学生,学习氛围非常好,每天都学到9点多才离开教室,练习的时间很充裕,而且如果在练习的过程中有什么困难,随时可以向老师求助,不像其它机构,通过视频教学,有的甚至学完之后都看不到讲师本人,问点问题都不方便,这就是蓝懿与其它机构的区别,相信在刘国斌老师的细心指导下,每个蓝懿学员都能找到满意的工作,加油!

                                                                  写博客第三十九天;

                                                                              QQ:565803433​


蓝懿ios 技术内容交流和学习心得 11.17

今天是练习日: 一、把模拟器里的view当作图片保存到相册的方法: 1、 创建画布    UIGraphicsBeginImageContext(self.EditView.boun...

蓝懿iOS 技术内容交流和学习心得 11.11

今天是光棍节,今天上午老师讲了昨天的作业   下午让我们考试  感觉到了前面的知识掌握的不够好我们一起多复习一下: ​ UIIview   属性 backgroundcolor(背景颜色)...

蓝懿iOS 技术内容交流和学习心得 11.9

今天上午讲了昨天点作业,然后讲了自定义cell的高度随显示内容的高度变化而变化,主要解决步骤以label为例:1、通过 CGRect rect= [label.textboundingRectW...

蓝懿iOS 技术内容交流和学习心得 11.16

、touch触发点点击屏幕 @property (nonatomic, strong)UIImageView *iv; - (void)viewDidLoad {    [super vi...

蓝懿ios 技术内容交流和学习心得 11.14

今天是练习日,对这两天的代码做了一个回顾,发现几处逻辑处理: 1、在解析类中给数组赋值:利用对象的属性和字典的key      [e.items addObject:examDic[@"i...

蓝懿ios 技术内容交流和学习心得 11.22

今天讲了播放音乐的基础内容: 1、先在文件中导入#import   2、声明属性:@property  (nonatomic,  strong )AVAudioPlayer ...

蓝懿ios 技术内容和心得交流分享 11.3 打飞机主要步骤

今天又到了练习日   今天大家都在做昨天的一个有多个界面的打飞机游戏,基本把所有讲过的内容都涵盖到了,一个项目基本上做了一整天,把步骤一步步分解开来,条理非常清晰,讲的也深入浅出,大家基本上都能够领会...

蓝懿ioS 技术内容和心得交流 11.1 正反向

今天老师给我们讲了 生命周期方法 页面跳转 正反取值调用  感觉听的还是一般  总是感觉懵懵懂懂的  那我们就一起复习一下: 把singleView的项目改成空项目 1.把viewco...

蓝懿ios 技术内容和心得交流分享 11.4 控件

今天老师给我们讲了以前学过的控件  感觉今天又学到点新的东西  但又感觉听不懂  下面我们一起复习一下今天学的: UIIview   属性 backgroundcolor(背景颜色)  ...

蓝懿ios 技术内容和心得交流分享 11.7

又到了练习日  感觉最近学的东西挺多,今天我们就一起复习一下前几天学到东西: ​导航控制器有两种方式生成,一种是通过拖拽,另一种是通过代码添加: 纯代码创建 :UINavigationCo...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:蓝懿ios 技术内容交流和学习心得 11.18
举报原因:
原因补充:

(最多只允许输入30个字)