#import "DrawView.h" @implementation DrawView -(void)awakeFromNib { // //画图片 // UIImage *image = [UIImage imageNamed:@"001"]; // //drawAtPoint绘制的是原始图片的大小 // //[image drawAtPoint:CGPointZero]; // // //把要绘制的图片给填充到给定的区域当中. // //[image drawInRect:rect]; // //平铺 // [image drawAsPatternInRect:self.bounds]; /** * 注:这些方法都是默认获取到了图形的上下文,而且只有在drawRect方法中才能起作用,在其他的方法中不能获得与view相关联的图形上下文 * * */ } - (void)drawRect:(CGRect)rect { // Drawing code //画图片 UIImage *image = [UIImage imageNamed:@"001"]; //drawAtPoint绘制的是原始图片的大小 //[image drawAtPoint:CGPointZero]; //把要绘制的图片给填充到给定的区域当中. //[image drawInRect:rect]; //裁剪(超过裁剪区域以久的内容,都会被自动裁剪掉) //设置裁剪区域一定要在绘制之前进行设置 //UIRectClip(CGRectMake(0, 0, 50, 50)); //平铺 //[image drawAsPatternInRect:self.bounds]; //快速填充画一个矩形 UIRectFill(CGRectMake(50, 50, 50, 50)); } //画文字 - (void)drawText{ NSString *str = @"小码哥小码哥小码哥小码哥小码哥小码哥"; NSMutableDictionary *dict = [NSMutableDictionary dictionary]; //字体大小 dict[NSFontAttributeName] = [UIFont systemFontOfSize:30]; //设置颜色 dict[NSForegroundColorAttributeName] = [UIColor redColor]; //设置描边 dict[NSStrokeColorAttributeName] = [UIColor greenColor]; dict[NSStrokeWidthAttributeName] = @2; //设置阴影 NSShadow *shaw = [[NSShadow alloc] init]; shaw.shadowColor = [UIColor blueColor]; //设置阴影的偏移量 shaw.shadowOffset = CGSizeMake(1, 1); shaw.shadowBlurRadius = 2; dict[NSShadowAttributeName] = shaw; [str drawAtPoint:CGPointZero withAttributes:dict]; //[str drawInRect:rect withAttributes:dict]; //用drawInRect:rect会自动换行.用drawAtPoint不会自动换行. } @end
一般使用UIKit给我们提供的绘图来绘制一些文字,图片这些东西.
UIKit给我们提供画图的方法底层也是分为四步.所以也必须在drawRect方法当中去写.
1.如何画文字?
先创建好要画的文字
使用UIKit提供的方法进行绘制.
方法说明:
drawAtPoint:要画到哪个位置
withAttributes:文本的样式.
[str drawAtPoint:CGPointZero withAttributes:nil];
2.如何添加绘制文字属性?
通过绘制方法的最后一个属性withAttributes来设置文字属性.
它要求传入的是一个字典.它是通过字典的key和Value的形式来设置文字样式.
那传什么key,什么值我们可以在UIKit头文件当中的NSAttributedString类当中去找.
使用形式如下:
创建一个可变的字典,设置key,value
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
字体
dict[NSFontAttributeName] = [UIFont systemFontOfSize:50];
颜色
dict[NSForegroundColorAttributeName] = [UIColor redColor];
设置边框颜色
dict[NSStrokeColorAttributeName] = [UIColor redColor];
dict[NSStrokeWidthAttributeName] = @1;
阴影
NSShadow *shadow = [[NSShadow alloc] init];
shadow.shadowOffset = CGSizeMake(10, 10);
shadow.shadowColor = [UIColor greenColor];
shadow.shadowBlurRadius = 3;
dict[NSShadowAttributeName] = shadow;
3.drawAtPoint:和drawInRect:的区别?
drawAtPoint:不能够自动换行
drawInRect:能够自动换行
4.如果绘制图片?
绘制图片同样开始要先把图片素材导入.
AtPoint:参数说明图片要绘制到哪个位置.
通过调用UIKit的方法drawAtPoint:CGPointZero方法进行绘制;
5.在绘制图片过程当中.drawAtPoint:和drawInRect:两个方法的区别?
drawAtPoint:绘制出来的图图片跟图片的实际尺寸一样大
drawInRect:使用这个方法绘制出来的图片尺寸会和传入的rect区域一样大.
6.如果进行平铺图片?
[image drawAsPatternInRect:rect];
7.如何选用UIKit提供的方法快速画一个矩形?
快速的用矩形去填充一个区域
UIRectFill(rect);
8.如何利用UIKit裁剪一个区域?
UIRectClip(CGRectMake(0, 0, 50, 50));
这个方法必须要设置好裁剪区域,才能有裁剪