【iOS】Quartz2D信纸条纹
一、前导程序
新建一个项目,在主控制器文件中实现以下几行代码,就能轻松的完成图片在视图中的平铺。
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- UIImage *image=[UIImage imageNamed:@"me"];
- UIColor *color=[UIColor colorWithPatternImage:image];
- self.view.backgroundColor=color;
- }
效果:
二、实现信纸条纹的效果
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- // 1.生成一张以后用于平铺的小图片
- CGSize size = CGSizeMake(self.view.frame.size.width, );
- UIGraphicsBeginImageContextWithOptions(size , NO, );
- // 2.画矩形
- CGContextRef ctx = UIGraphicsGetCurrentContext();
- CGFloat height = ;
- CGContextAddRect(ctx, CGRectMake(, , self.view.frame.size.width, height));
- [[UIColor whiteColor] set];
- CGContextFillPath(ctx);
- // 3.画线条
- CGFloat lineWidth = ;
- CGFloat lineY = height - lineWidth;
- CGFloat lineX = ;
- CGContextMoveToPoint(ctx, lineX, lineY);
- CGContextAddLineToPoint(ctx, , lineY);
- [[UIColor blackColor] set];
- CGContextStrokePath(ctx);
- UIImage *image=UIGraphicsGetImageFromCurrentImageContext();
- UIColor *color=[UIColor colorWithPatternImage:image];
- self.view.backgroundColor=color;
- }
效果:
三、应用场景
完成一个简陋的电子书阅读器
代码:
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- // 1.生成一张以后用于平铺的小图片
- CGSize size = CGSizeMake(self.view.frame.size.width, );
- UIGraphicsBeginImageContextWithOptions(size , NO, );
- // 2.画矩形
- CGContextRef ctx = UIGraphicsGetCurrentContext();
- CGFloat height = ;
- CGContextAddRect(ctx, CGRectMake(, , self.view.frame.size.width, height));
- [[UIColor brownColor] set];
- CGContextFillPath(ctx);
- // 3.画线条
- CGFloat lineWidth = ;
- CGFloat lineY = height - lineWidth;
- CGFloat lineX = ;
- CGContextMoveToPoint(ctx, lineX, lineY);
- CGContextAddLineToPoint(ctx, , lineY);
- [[UIColor blackColor] set];
- CGContextStrokePath(ctx);
- UIImage *image=UIGraphicsGetImageFromCurrentImageContext();
- UIColor *color=[UIColor colorWithPatternImage:image];
- //self.view.backgroundColor=color;
- self.textview.backgroundColor=color;
- }
- - (IBAction)perBtnClick:(UIButton *)sender {
- self.index--;
- self.textview.text=[NSString stringWithFormat:@"第%d页",self.index];
- CATransition *ca = [[CATransition alloc] init];
- ca.type = @"pageCurl";
- [self.textview.layer addAnimation:ca forKey:nil];
- }
- - (IBAction)nextBtnClick:(UIButton *)sender {
- self.index++;
- self.textview.text=[NSString stringWithFormat:@"第%d页",self.index];
- CATransition *ca = [[CATransition alloc] init];
- ca.type = @"pageCurl";
- [self.textview.layer addAnimation:ca forKey:nil];
- }
storyboard中的界面布局
实现的简单效果:
【iOS】Quartz2D信纸条纹的更多相关文章
- iOS开发UI篇—Quartz2D使用(信纸条纹)
iOS开发UI篇—Quartz2D使用(信纸条纹) 一.前导程序 新建一个项目,在主控制器文件中实现以下几行代码,就能轻松的完成图片在视图中的平铺. #import "YYViewContr ...
- iOS Quartz2D画图
对于刚接触Quartz2D的同学来说,先了解 上下文 的概念,再从最基础的画线来具体体验Quartz2D的画图步骤 介绍Quart2D :是苹果官方的二维(平面)绘图引擎,同时支持iOS和macOS系 ...
- IOS Quartz2D简介
Quartz2D 简介( 后续会有相关应用) 第一部分 绘制直线 代码示例: - (void)drawRect:(CGRect)rect{ //获取图形上下文 CGContextRef cxConte ...
- iOS——Quartz2D
0. 复习. 1.基本图形绘制 * 线段(线宽.线段样式) * 矩形(空心.实心.颜色) * 三角形.四边形等形状 1> 说明 - (void)drawRect:(CGRect)rect 什么时 ...
- iOS:quartz2D绘图 (动画)
quartz2D可以用来绘制自己需要的图形,它们绘制出来的是一个静态的图形,那么如何绘制一个动态的图形呢?动态的图形就是动画,所谓动画,其实就是很多张图片在短时间内不停的切换所产生的一种视觉效果.qu ...
- IOS Quartz2D 通过UIColor生成图片
普通生成 示例代码: //这里实现普通生成图片的方法 - (void)drawRect:(CGRect)rect { CGRect cxRect = CGRectMake(, , , ); UIGra ...
- IOS Quartz2D自定义view
@property (nonatomic, weak) UIImageView *imageView; @property (nonatomic, weak) NJImageView *njIv; @ ...
- 文顶顶iOS开发博客链接整理及部分项目源代码下载
文顶顶iOS开发博客链接整理及部分项目源代码下载 网上的iOS开发的教程很多,但是像cnblogs博主文顶顶的博客这样内容图文并茂,代码齐全,示例经典,原理也有阐述,覆盖面宽广,自成系统的系列教程 ...
- iOS--开发从入门到精通
前言: 从事iOS开发已有几个年头,平时对于iOS开发的知识积累都比较碎片化,为了更好的掌握开发技能, 索性整理iOS开发的知识体系,以便于后面进阶成iOS高级开发工程师. 一.iOS开发基础 开发设 ...
随机推荐
- 一个方法告诉你as3的removeChild性能有多烂
其实as3这个坑我早就踩过,不过那时没太注意,最近把项目的removeChild干掉换成了visible=false,发现效率质的提升…… 先贴一下代码吧 private function testR ...
- 安装cvxpy遇到的问题与解决方案(ubuntu14.10,python 2.7.8)
应该说,cvxpy的安装说明是很棒的,一步一步非常清楚,www.cvxpy.org/en/latest/install/index.html 可是,我照着做完之后,还是不能import cvxpy,不 ...
- 将在本地创建的Git仓库push到Git@OSC
引用自:http://my.oschina.net/flan/blog/162189 在使用git 处理对android的修改的过程之中总结的.但不完善 Git push $ git push ori ...
- c# C++接口封装 汽车模拟仿真
struct PinCamParIn//用户输入的针孔相机参数结构体{ char CameraName[512]; float Offset[3]; float Angle[3]; ...
- [原]ffmpeg编译android 硬解码支持库 libstagefright
最近花了一天时间将ffmpeg/tools/build_stagefright执行成功,主要是交叉编译所需要的各种动态库的支持没链接上,导致各种报错,基本上网络上问到的问题我都碰到了,特此记录下来. ...
- 比特(bit)与字节(byte)区别,站位比较
“字节”(Byte) “比特”(Bit) 当你进行网络下载的时候它们会经常出现,同时你获取的速度指示也都以比特/每秒或者字节/每秒来显示. 现在就来弄清楚比特(Bit).字节(Byte)和千字节(Kb ...
- ES6 Promise 接口
构造函数 new Promise(function(resolve, reject){}); 构造函数接受一个函数(executor)作为参数,该函数在返回 Promise 实例之前被调用.函数的两个 ...
- RESTful API 设计指南【转】
网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备......). 因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信.这导致AP ...
- Lua中的require
lua中的require机制 为了方便代码管理,通常会把lua代码分成不同的模块,然后在通过require函数把它们加载进来.现在看看lua的require的处理流程.1.require机制相关 ...
- codeforce A. Design Tutorial: Learn from Math
题意:将一个数拆成两个合数的和, 输出这两个数!(这道题做的真是TMD水啊)开始的时候不知道composite numbers是啥意思,看了3遍才看懂.... 看懂之后又想用素数筛选法来做,后来决定单 ...