#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:@""];
//drawAtPoint绘制的是原始图片的大小
//[image drawAtPoint:CGPointZero]; //把要绘制的图片给填充到给定的区域当中.
//[image drawInRect:rect]; //裁剪(超过裁剪区域以久的内容,都会被自动裁剪掉)
//设置裁剪区域一定要在绘制之前进行设置
//UIRectClip(CGRectMake(0, 0, 50, 50)); //平铺
//[image drawAsPatternInRect:self.bounds]; //快速填充画一个矩形
UIRectFill(CGRectMake(, , , )); } //画文字
- (void)drawText{ NSString *str = @"小码哥小码哥小码哥小码哥小码哥小码哥"; NSMutableDictionary *dict = [NSMutableDictionary dictionary];
//字体大小
dict[NSFontAttributeName] = [UIFont systemFontOfSize:];
//设置颜色
dict[NSForegroundColorAttributeName] = [UIColor redColor];
//设置描边
dict[NSStrokeColorAttributeName] = [UIColor greenColor];
dict[NSStrokeWidthAttributeName] = @;
//设置阴影
NSShadow *shaw = [[NSShadow alloc] init];
shaw.shadowColor = [UIColor blueColor];
//设置阴影的偏移量
shaw.shadowOffset = CGSizeMake(, );
shaw.shadowBlurRadius = ;
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));

这个方法必须要设置好裁剪区域,才能有裁剪

iOS开发之Quartz2D 五:UIKIT 绘图演练,画文字,画图片的更多相关文章

  1. iOS开发之Quartz2D详解

    1. 什么是Quartz2D? Quartz 2D是一个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片( ...

  2. iOS开发之Quartz2D

    1.         Quartz2D概述及作用 Quartz2D的API是纯C语言的,Quartz2D的API来自于Core Graphics框架. 数据类型和函数基本都以CG作为前缀,比如: CG ...

  3. iOS开发之Quartz2D 六 绘制UIImageView

    #import <UIKit/UIKit.h> @interface XMGImageView : UIView /** <#注释#> */ @property (nonato ...

  4. iOS开发之Quartz2D 二:绘制直线,曲线,圆弧,矩形,椭圆,圆

    #import "DrawView.h" @implementation DrawView /** * 作用:专门用来绘图 * 什么时候调用:当View显示的时候调用 * @par ...

  5. ios开发之Quartz2D 四:画饼图

    #import "PieView.h" @implementation PieView - (void)drawRect:(CGRect)rect { // Drawing cod ...

  6. iOS开发之Xcode常用调试技巧总结

    转载自:iOS开发之Xcode常用调试技巧总结 最近在面试,面试过程中问到了一些Xcode常用的调试技巧问题.平常开发过程中用的还挺顺手的,但你要突然让我说,确实一脸懵逼.Debug的技巧很多,比如最 ...

  7. iOS开发之UISearchBar初探

    iOS开发之UISearchBar初探 UISearchBar也是iOS开发常用控件之一,点进去看看里面的属性barStyle.text.placeholder等等.但是这些属性显然不足矣满足我们的开 ...

  8. iOS开发之info.pist文件和.pch文件

    iOS开发之info.pist文件和.pch文件 如果你是iOS开发初学者,不用过多的关注项目中各个文件的作用.因为iOS开发的学习路线起点不在这里,这些文件只会给你学习带来困扰. 打开一个项目,我们 ...

  9. 李洪强iOS开发之iOS好文章收集

    李洪强iOS开发之iOS好文章收集 该文收集朋友们转发或自己的写的技术文章,如果你也有相关的好文章,欢迎留言,当好文章多的时候,我会对这些好文章进行分门别类 文章 简述 日期 直播服务配置 使用 ng ...

随机推荐

  1. 将bat批处理命令文件固定到任务栏

    将bat批处理命令文件固定到任务栏第一种方法:使用链接工具http://www.xstui.com/read/3451.在任务栏点击右键,移动到工具栏,勾选链接工具2.你会在通知栏左侧看到链接字样,将 ...

  2. makeMtk- user 版本编译

    有时候我们需要在我们的手机上编译user 版本,先说一下user 跟eng版本的区别 user:这个版本是没有root权限的,当你adb shell进入后,linux下显示的是$,不可以push ap ...

  3. using可以用于释放操作,相当于Dispose()

    using可以用于释放操作,相当于Dispose()

  4. scrapy爬取知乎某个问题下的所有图片

    前言: 1.仅仅是想下载图片,别人上传的图片也是没有版权的,下载来可以自己欣赏做手机背景但不商用 2.由于爬虫周期的问题,这个代码写于2019.02.13 1.关于知乎爬虫 网上能访问到的理论上都能爬 ...

  5. 如何使用echo.js实现图片的懒加载(整理)

    如何使用echo.js实现图片的懒加载(整理) 一.总结 一句话总结:a.在img标签中添加data-echo属性加载真实图片:<img class="loading" sr ...

  6. Android Service com.android.exchange.ExchangeService has leaked ServiceConnection

    启动Android项目的时候,clean  Project的时候,报错: android.app.ServiceConnectionLeaked: Service com.android.exchan ...

  7. 【“玲珑杯”ACM比赛 Round #20 H】康娜的数学课

    [链接]http://www.ifrog.cc/acm/problem/1161 [题意] 在这里写题意 [题解] 首先x<l肯定无解; 然后,肯定是要选其中的一些数字的. 而且这些数字肯定是大 ...

  8. mycat快速体验(转)

    横空出世的MyCat截至到2015年4月,保守估计已经有超过60个项目在使用,主要应用在电信领域.互联网项目,大部分是交易和管理系统,少量是信息系统.比较大的系统中,数据规模单表单月30亿.本人也初步 ...

  9. 哈夫曼树的介绍 ---java实现

    一.     什么是哈夫曼树 是一种带权路径长度最短的二叉树,也称最优二叉树 带权路径长度:WPL=(W1*L1+W2*L2+W3*L3+...+ Wn*Ln) N个权值Wi(i=1,2,...n)构 ...

  10. amazeui学习笔记--css(HTML元素2)--代码Code

    amazeui学习笔记--css(HTML元素2)--代码Code 一.总结 1.行内代码:code标签<code> 2.代码片段:pre标签<pre> 3.限制代码块高度:添 ...