博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS开发UI篇—Quartz2D使用(信纸条纹)
阅读量:5964 次
发布时间:2019-06-19

本文共 3956 字,大约阅读时间需要 13 分钟。

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

一、前导程序

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

1 #import "YYViewController.h" 2  3 @interface YYViewController () 4  5 @end 6  7 @implementation YYViewController 8  9 - (void)viewDidLoad10 {11     [super viewDidLoad];12 13     UIImage *image=[UIImage imageNamed:@"me"];14     UIColor *color=[UIColor colorWithPatternImage:image];15     self.view.backgroundColor=color;16 }17 18 @end

效果:

 

二、实现信纸条纹的效果

利用上面的这种特性来做一个信纸的效果。
默认的view上没有分割线,要在view上加上分割线有两种方式:
(1)让美工做一张专门用来做背景的图片,把图片设置为背景。缺点:信的长度不确定,所以背景图片的长度也难以确定。
(2)通过一张小的图片来创建一个颜色,平铺实现背景效果。
 
第一步:生成一张以后用以平铺的小图片。
画矩形。
画线条。
第二步:从上下文中取出图片设置为背景。黑乎乎一片?(其他地方时透明的,控制器的颜色,如果不设置那么默认为黑色的)
实现代码:
1 // 2 //  YYViewController.m 3 //  01-信纸条纹 4 // 5 //  Created by 孔医己 on 14-6-11. 6 //  Copyright (c) 2014年 itcast. All rights reserved. 7 // 8  9 #import "YYViewController.h"10 11 @interface YYViewController ()12 13 @end14 15 @implementation YYViewController16 17 - (void)viewDidLoad18 {19     [super viewDidLoad];20 21     22     // 1.生成一张以后用于平铺的小图片23     CGSize size = CGSizeMake(self.view.frame.size.width, 35);24     UIGraphicsBeginImageContextWithOptions(size , NO, 0);25     26     // 2.画矩形27     CGContextRef ctx = UIGraphicsGetCurrentContext();28     CGFloat height = 35;29     CGContextAddRect(ctx, CGRectMake(0, 0, self.view.frame.size.width, height));30     [[UIColor whiteColor] set];31     CGContextFillPath(ctx);32     33     // 3.画线条34     35     CGFloat lineWidth = 2;36     CGFloat lineY = height - lineWidth;37     CGFloat lineX = 0;38     CGContextMoveToPoint(ctx, lineX, lineY);39     CGContextAddLineToPoint(ctx, 320, lineY);40     [[UIColor blackColor] set];41     CGContextStrokePath(ctx);42     43     44     UIImage *image=UIGraphicsGetImageFromCurrentImageContext();45     UIColor *color=[UIColor colorWithPatternImage:image];46     self.view.backgroundColor=color;47 }48 49 @end

效果:

三、应用场景

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

代码:

1 // 2 //  YYViewController.m 3 //  01-信纸条纹 4 // 5 //  Created by 孔医己 on 14-6-11. 6 //  Copyright (c) 2014年 itcast. All rights reserved. 7 // 8  9 #import "YYViewController.h"10 11 @interface YYViewController ()12 13 @property (weak, nonatomic) IBOutlet UITextView *textview;14 - (IBAction)perBtnClick:(UIButton *)sender;15 - (IBAction)nextBtnClick:(UIButton *)sender;16 @property(nonatomic,assign)int index;17 @end18 19 @implementation YYViewController20 21 - (void)viewDidLoad22 {23     [super viewDidLoad];24 25     26     // 1.生成一张以后用于平铺的小图片27     CGSize size = CGSizeMake(self.view.frame.size.width, 26);28     UIGraphicsBeginImageContextWithOptions(size , NO, 0);29     30     // 2.画矩形31     CGContextRef ctx = UIGraphicsGetCurrentContext();32     CGFloat height = 26;33     CGContextAddRect(ctx, CGRectMake(0, 0, self.view.frame.size.width, height));34     [[UIColor brownColor] set];35     CGContextFillPath(ctx);36     37     // 3.画线条38     39     CGFloat lineWidth = 2;40     CGFloat lineY = height - lineWidth;41     CGFloat lineX = 0;42     CGContextMoveToPoint(ctx, lineX, lineY);43     CGContextAddLineToPoint(ctx, 320, lineY);44     [[UIColor blackColor] set];45     CGContextStrokePath(ctx);46     47     48     UIImage *image=UIGraphicsGetImageFromCurrentImageContext();49     UIColor *color=[UIColor colorWithPatternImage:image];50     //self.view.backgroundColor=color;51     self.textview.backgroundColor=color;52 }53 54 - (IBAction)perBtnClick:(UIButton *)sender {55     self.index--;56     self.textview.text=[NSString stringWithFormat:@"第%d页",self.index];57     CATransition *ca = [[CATransition alloc] init];58     ca.type = @"pageCurl";59     60     [self.textview.layer addAnimation:ca forKey:nil];61     62 }63 64 - (IBAction)nextBtnClick:(UIButton *)sender {65     self.index++;66     self.textview.text=[NSString stringWithFormat:@"第%d页",self.index];67     CATransition *ca = [[CATransition alloc] init];68     ca.type = @"pageCurl";69     70     [self.textview.layer addAnimation:ca forKey:nil];71 }72 @end

storyboard中的界面布局

实现的简单效果:

       

转载地址:http://pqvax.baihongyu.com/

你可能感兴趣的文章
在一个程序中调用另一个程序并且传输数据到选择屏幕执行这个程序
查看>>
HDOJ_ACM_Rescue
查看>>
笔记纪录
查看>>
九、oracle 事务
查看>>
Git - 操作指南
查看>>
正则表达式的贪婪与非贪婪模式
查看>>
SqlServer存储过程调用接口
查看>>
DOM
查看>>
通过jQuery.support看javascript中的兼容性问题
查看>>
NYOJ-取石子
查看>>
《zw版·Halcon-delphi系列原创教程》halconxlib控件列表
查看>>
代码生成工具Database2Sharp中增加视图的代码生成以及主从表界面生成功能
查看>>
关于在VS2005中编写DLL遇到 C4251 警告的解决办法
查看>>
在线匿名之父意欲终结“加密战争”
查看>>
提高信息安全意识对网络勒索病毒说不
查看>>
解酒方法
查看>>
vi 命令
查看>>
1.1
查看>>
[logstash-input-redis]插件使用详解
查看>>
优化应用的电池寿命(笔记)-1
查看>>