1. A new project is created in the prefix program. The following lines of code can be implemented in the master controller file to easily tile images in the view. Copy code 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 2. Use the above features to create a stationery effect. There is no split line on the default view. There are two ways to add a split line to the view: (1) Let the artist create an image dedicated to the background and set the image as the background. Disadvantage: the length of the message is uncertain, so it is difficult to determine the length of the background image. (2) Use a small image to create a color and tile the background. Step 1: generate a small image to be tiled later. Draw a rectangle. Draw lines. Step 2: remove the image from the context and set it as the background. Dark? (The Color of the controller is transparent in other places. If it is not set, the default value is black.) implementation code: Copy code 1 // 2 // YYViewController. m 3 // 01-Stationery stripe 4 // 5 // Created by Kong zhi ji 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. generate a small image to be tiled. 23 CGSize size = CGSizeMake (self. view. frame. size. width, 35); 24 uigraphicsbeginimagecontextwitexceptions (size, NO, 0); 25 26 // 2. draw the rectangle 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. draw lines 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 = equals (); 45 UIColor * color = [UIColor colorWithPatternImage: image]; 46 self. view. backgroundColor = color; 47} 48 49 @ end 3. Complete a simple e-book reader code in the Application Scenario: Copy code 1 // 2 // YYViewController. m 3 // 01-Stationery stripe 4 // 5 // Created by Kong zhi ji 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. generate a small image for tile 27 CGSize size = CGSizeMake (self. view. frame. size. width, 26); 28 uigraphicsbeginimagecontextwitexceptions (size, NO, 0); 29 30 // 2. draw the 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. draw lines 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 = equals (); 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: @ "Page % 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: @ "Page % 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