一、前导程序

新建一个项目,在主控制器文件中实现以下几行代码,就能轻松的完成图片在视图中的平铺。

  1. - (void)viewDidLoad
  2. {
  3. [super viewDidLoad];
  4.  
  5. UIImage *image=[UIImage imageNamed:@"me"];
  6. UIColor *color=[UIColor colorWithPatternImage:image];
  7. self.view.backgroundColor=color;
  8. }

效果:

二、实现信纸条纹的效果

利用上面的这种特性来做一个信纸的效果。
默认的view上没有分割线,要在view上加上分割线有两种方式:
(1)让美工做一张专门用来做背景的图片,把图片设置为背景。缺点:信的长度不确定,所以背景图片的长度也难以确定。
(2)通过一张小的图片来创建一个颜色,平铺实现背景效果。
 
第一步:生成一张以后用以平铺的小图片。
画矩形。
画线条。
第二步:从上下文中取出图片设置为背景。黑乎乎一片?(其他地方时透明的,控制器的颜色,如果不设置那么默认为黑色的)
实现代码:
  1. - (void)viewDidLoad
  2. {
  3. [super viewDidLoad];
  4.  
  5. // 1.生成一张以后用于平铺的小图片
  6. CGSize size = CGSizeMake(self.view.frame.size.width, );
  7. UIGraphicsBeginImageContextWithOptions(size , NO, );
  8.  
  9. // 2.画矩形
  10. CGContextRef ctx = UIGraphicsGetCurrentContext();
  11. CGFloat height = ;
  12. CGContextAddRect(ctx, CGRectMake(, , self.view.frame.size.width, height));
  13. [[UIColor whiteColor] set];
  14. CGContextFillPath(ctx);
  15.  
  16. // 3.画线条
  17.  
  18. CGFloat lineWidth = ;
  19. CGFloat lineY = height - lineWidth;
  20. CGFloat lineX = ;
  21. CGContextMoveToPoint(ctx, lineX, lineY);
  22. CGContextAddLineToPoint(ctx, , lineY);
  23. [[UIColor blackColor] set];
  24. CGContextStrokePath(ctx);
  25.  
  26. UIImage *image=UIGraphicsGetImageFromCurrentImageContext();
  27. UIColor *color=[UIColor colorWithPatternImage:image];
  28. self.view.backgroundColor=color;
  29. }

效果:

三、应用场景

完成一个简陋的电子书阅读器

代码:

  1. - (void)viewDidLoad
  2. {
  3. [super viewDidLoad];
  4.  
  5. // 1.生成一张以后用于平铺的小图片
  6. CGSize size = CGSizeMake(self.view.frame.size.width, );
  7. UIGraphicsBeginImageContextWithOptions(size , NO, );
  8.  
  9. // 2.画矩形
  10. CGContextRef ctx = UIGraphicsGetCurrentContext();
  11. CGFloat height = ;
  12. CGContextAddRect(ctx, CGRectMake(, , self.view.frame.size.width, height));
  13. [[UIColor brownColor] set];
  14. CGContextFillPath(ctx);
  15.  
  16. // 3.画线条
  17.  
  18. CGFloat lineWidth = ;
  19. CGFloat lineY = height - lineWidth;
  20. CGFloat lineX = ;
  21. CGContextMoveToPoint(ctx, lineX, lineY);
  22. CGContextAddLineToPoint(ctx, , lineY);
  23. [[UIColor blackColor] set];
  24. CGContextStrokePath(ctx);
  25.  
  26. UIImage *image=UIGraphicsGetImageFromCurrentImageContext();
  27. UIColor *color=[UIColor colorWithPatternImage:image];
  28. //self.view.backgroundColor=color;
  29. self.textview.backgroundColor=color;
  30. }
  31.  
  32. - (IBAction)perBtnClick:(UIButton *)sender {
  33. self.index--;
  34. self.textview.text=[NSString stringWithFormat:@"第%d页",self.index];
  35. CATransition *ca = [[CATransition alloc] init];
  36. ca.type = @"pageCurl";
  37.  
  38. [self.textview.layer addAnimation:ca forKey:nil];
  39.  
  40. }
  41.  
  42. - (IBAction)nextBtnClick:(UIButton *)sender {
  43. self.index++;
  44. self.textview.text=[NSString stringWithFormat:@"第%d页",self.index];
  45. CATransition *ca = [[CATransition alloc] init];
  46. ca.type = @"pageCurl";
  47.  
  48. [self.textview.layer addAnimation:ca forKey:nil];
  49. }

storyboard中的界面布局

实现的简单效果:

       

【iOS】Quartz2D信纸条纹的更多相关文章

  1. iOS开发UI篇—Quartz2D使用(信纸条纹)

    iOS开发UI篇—Quartz2D使用(信纸条纹) 一.前导程序 新建一个项目,在主控制器文件中实现以下几行代码,就能轻松的完成图片在视图中的平铺. #import "YYViewContr ...

  2. iOS Quartz2D画图

    对于刚接触Quartz2D的同学来说,先了解 上下文 的概念,再从最基础的画线来具体体验Quartz2D的画图步骤 介绍Quart2D :是苹果官方的二维(平面)绘图引擎,同时支持iOS和macOS系 ...

  3. IOS Quartz2D简介

    Quartz2D 简介( 后续会有相关应用) 第一部分 绘制直线 代码示例: - (void)drawRect:(CGRect)rect{ //获取图形上下文 CGContextRef cxConte ...

  4. iOS——Quartz2D

    0. 复习. 1.基本图形绘制 * 线段(线宽.线段样式) * 矩形(空心.实心.颜色) * 三角形.四边形等形状 1> 说明 - (void)drawRect:(CGRect)rect 什么时 ...

  5. iOS:quartz2D绘图 (动画)

    quartz2D可以用来绘制自己需要的图形,它们绘制出来的是一个静态的图形,那么如何绘制一个动态的图形呢?动态的图形就是动画,所谓动画,其实就是很多张图片在短时间内不停的切换所产生的一种视觉效果.qu ...

  6. IOS Quartz2D 通过UIColor生成图片

    普通生成 示例代码: //这里实现普通生成图片的方法 - (void)drawRect:(CGRect)rect { CGRect cxRect = CGRectMake(, , , ); UIGra ...

  7. IOS Quartz2D自定义view

    @property (nonatomic, weak) UIImageView *imageView; @property (nonatomic, weak) NJImageView *njIv; @ ...

  8. 文顶顶iOS开发博客链接整理及部分项目源代码下载

    文顶顶iOS开发博客链接整理及部分项目源代码下载   网上的iOS开发的教程很多,但是像cnblogs博主文顶顶的博客这样内容图文并茂,代码齐全,示例经典,原理也有阐述,覆盖面宽广,自成系统的系列教程 ...

  9. iOS--开发从入门到精通

    前言: 从事iOS开发已有几个年头,平时对于iOS开发的知识积累都比较碎片化,为了更好的掌握开发技能, 索性整理iOS开发的知识体系,以便于后面进阶成iOS高级开发工程师. 一.iOS开发基础 开发设 ...

随机推荐

  1. 一个方法告诉你as3的removeChild性能有多烂

    其实as3这个坑我早就踩过,不过那时没太注意,最近把项目的removeChild干掉换成了visible=false,发现效率质的提升…… 先贴一下代码吧 private function testR ...

  2. 安装cvxpy遇到的问题与解决方案(ubuntu14.10,python 2.7.8)

    应该说,cvxpy的安装说明是很棒的,一步一步非常清楚,www.cvxpy.org/en/latest/install/index.html 可是,我照着做完之后,还是不能import cvxpy,不 ...

  3. 将在本地创建的Git仓库push到Git@OSC

    引用自:http://my.oschina.net/flan/blog/162189 在使用git 处理对android的修改的过程之中总结的.但不完善 Git push $ git push ori ...

  4. c# C++接口封装 汽车模拟仿真

    struct PinCamParIn//用户输入的针孔相机参数结构体{    char CameraName[512];    float Offset[3];    float Angle[3];  ...

  5. [原]ffmpeg编译android 硬解码支持库 libstagefright

    最近花了一天时间将ffmpeg/tools/build_stagefright执行成功,主要是交叉编译所需要的各种动态库的支持没链接上,导致各种报错,基本上网络上问到的问题我都碰到了,特此记录下来. ...

  6. 比特(bit)与字节(byte)区别,站位比较

    “字节”(Byte) “比特”(Bit) 当你进行网络下载的时候它们会经常出现,同时你获取的速度指示也都以比特/每秒或者字节/每秒来显示. 现在就来弄清楚比特(Bit).字节(Byte)和千字节(Kb ...

  7. ES6 Promise 接口

    构造函数 new Promise(function(resolve, reject){}); 构造函数接受一个函数(executor)作为参数,该函数在返回 Promise 实例之前被调用.函数的两个 ...

  8. RESTful API 设计指南【转】

    网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备......). 因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信.这导致AP ...

  9. Lua中的require

    lua中的require机制    为了方便代码管理,通常会把lua代码分成不同的模块,然后在通过require函数把它们加载进来.现在看看lua的require的处理流程.1.require机制相关 ...

  10. codeforce A. Design Tutorial: Learn from Math

    题意:将一个数拆成两个合数的和, 输出这两个数!(这道题做的真是TMD水啊)开始的时候不知道composite numbers是啥意思,看了3遍才看懂.... 看懂之后又想用素数筛选法来做,后来决定单 ...