iOS开发之Quartz2D 五:UIKIT 绘图演练,画文字,画图片
#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 绘图演练,画文字,画图片的更多相关文章
- iOS开发之Quartz2D详解
1. 什么是Quartz2D? Quartz 2D是一个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片( ...
- iOS开发之Quartz2D
1. Quartz2D概述及作用 Quartz2D的API是纯C语言的,Quartz2D的API来自于Core Graphics框架. 数据类型和函数基本都以CG作为前缀,比如: CG ...
- iOS开发之Quartz2D 六 绘制UIImageView
#import <UIKit/UIKit.h> @interface XMGImageView : UIView /** <#注释#> */ @property (nonato ...
- iOS开发之Quartz2D 二:绘制直线,曲线,圆弧,矩形,椭圆,圆
#import "DrawView.h" @implementation DrawView /** * 作用:专门用来绘图 * 什么时候调用:当View显示的时候调用 * @par ...
- ios开发之Quartz2D 四:画饼图
#import "PieView.h" @implementation PieView - (void)drawRect:(CGRect)rect { // Drawing cod ...
- iOS开发之Xcode常用调试技巧总结
转载自:iOS开发之Xcode常用调试技巧总结 最近在面试,面试过程中问到了一些Xcode常用的调试技巧问题.平常开发过程中用的还挺顺手的,但你要突然让我说,确实一脸懵逼.Debug的技巧很多,比如最 ...
- iOS开发之UISearchBar初探
iOS开发之UISearchBar初探 UISearchBar也是iOS开发常用控件之一,点进去看看里面的属性barStyle.text.placeholder等等.但是这些属性显然不足矣满足我们的开 ...
- iOS开发之info.pist文件和.pch文件
iOS开发之info.pist文件和.pch文件 如果你是iOS开发初学者,不用过多的关注项目中各个文件的作用.因为iOS开发的学习路线起点不在这里,这些文件只会给你学习带来困扰. 打开一个项目,我们 ...
- 李洪强iOS开发之iOS好文章收集
李洪强iOS开发之iOS好文章收集 该文收集朋友们转发或自己的写的技术文章,如果你也有相关的好文章,欢迎留言,当好文章多的时候,我会对这些好文章进行分门别类 文章 简述 日期 直播服务配置 使用 ng ...
随机推荐
- android 自己定义View之SubmitView
转载请注明出处:王亟亟的大牛之路 近期看了一大堆的自己定义View多数都能够充当耗时操作的交互界面.再接再厉再传一个SubmitView.一个和可用于模仿提交等待与用户交互用的一个自己定义View 效 ...
- hdu 3294 Girls' research
#include<stdio.h> #include<string.h> #define MAX 200020 char s[MAX],ss[MAX*2],str[2]; in ...
- JS / CSS 实现的便签记录本
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- linux监测tomcat服务
原文链接:https://blog.csdn.net/qq_37936542/article/details/81086928 项目上线之后,tomcat服务器有时候会莫名其妙的挂掉,利用shell写 ...
- OGRE之跳出漫长的编译等待
当你新建一个OGRE项目时是否发现那漫长的编译等待时间差点儿让你崩溃? 当你改动代码不断进行调试时是否由于那漫长的编译等待而让你烦恼? 假设是,那么请继续往下看,您将受益匪浅. ----------- ...
- stackFromBottom-listview 内容从底部开始填充
今天遇到了一个问题,就是listview虽然占满了整个屏幕,但是,当它的内容只有几条的时候,它会从底部开始显示,上面留有空白.后来进入xml发现,listview有个属性stackFromBottom ...
- 3. ZAB与Paxos算法的联系与区别。
转自:https://blog.csdn.net/en_joker/article/details/78665809 ZAB协议并不是Paxos算法的一个典型实现,在讲解ZAB和Paxos之间的区别之 ...
- python关于字典的操作
https://www.cnblogs.com/RENQIWEI1995/p/7931374.html 最常用的代码举例: dict = {'Name': 'Zara', 'Age': 7, 'Cla ...
- 00087_File
1.IO概述 (1)要把数据持久化存储,就需要把内存中的数据存储到内存以外的其他持久化设备(硬盘.光盘.U盘等)上: (2)当需要把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作 ...
- Cocos2d 游戏状态机
加cocos2d 是标题党. 事实上跟cocos2d无关. 1.游戏背景介绍 比方有这么一个"记忆"类的比赛游戏.你和电脑对战.轮到谁的回合,谁翻两张牌.假设两张牌一样,就消掉这两 ...