ios截屏代碼[轉]


這位博主的連接中將ios自定義大小位置的截屏代碼寫的很不錯,馬上就能用的方法,對於只想馬上用的程序員很有幫助

http://www.2cto.com/kf/201310/250228.html

 

我將其改為以下代碼:

 1 #pragma mark -=====自定義截屏位置大小的邏輯代碼=====-
 2 static int ScreenshotIndex=0; //這里的邏輯直接采用上面博主的邏輯了
 3 -(void)ScreenShot{
 4     //這里因為我需要全屏接圖所以直接改了,宏定義iPadWithd為1024,iPadHeight為768,
 5 //    UIGraphicsBeginImageContextWithOptions(CGSizeMake(640, 960), YES, 0);     //設置截屏大小
 6     UIGraphicsBeginImageContextWithOptions(CGSizeMake(iPadWidth, iPadHeight), YES, 0);     //設置截屏大小
 7     [[self.view layer] renderInContext:UIGraphicsGetCurrentContext()];
 8     UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
 9     UIGraphicsEndImageContext();
10     CGImageRef imageRef = viewImage.CGImage;
11 //    CGRect rect = CGRectMake(166, 211, 426, 320);//這里可以設置想要截圖的區域
12     CGRect rect = CGRectMake(0, 0, iPadWidth, iPadHeight);//這里可以設置想要截圖的區域
13     CGImageRef imageRefRect =CGImageCreateWithImageInRect(imageRef, rect);
14     UIImage *sendImage = [[UIImage alloc] initWithCGImage:imageRefRect];
15     UIImageWriteToSavedPhotosAlbum(sendImage, nil, nil, nil);//保存圖片到照片庫
16     NSData *imageViewData = UIImagePNGRepresentation(sendImage);
17     
18     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
19     NSString *documentsDirectory = [paths objectAtIndex:0];
20     NSString *pictureName= [NSString stringWithFormat:@"screenShow_%d.png",ScreenshotIndex];
21     NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:pictureName];
22     NSLog(@"截屏路徑打印: %@", savedImagePath);
23     //這里我將路徑設置為一個全局String,這里做的不好,我自己是為了用而已,希望大家別這么寫
24     [self SetPickPath:savedImagePath];
25 
26     [imageViewData writeToFile:savedImagePath atomically:YES];//保存照片到沙盒目錄
27     CGImageRelease(imageRefRect);
28     ScreenshotIndex++;
29 }
30 //設置路徑
31 - (void)SetPickPath:(NSString *)PickImage {
32     _ScreenshotsPickPath = PickImage;
33 }
34 //獲取路徑<這里我就直接用於郵件推送的代碼中去了,能達到效果,但肯定有更好的寫法>
35 - (NSString *)GetPickPath {
36     return _ScreenshotsPickPath;
37 }

 重要備注: 上面代碼只適用於截取普通視圖如:UIScrollView、UIView、UIImageView等等,不適用於OpenGL ES、相機內容等,若需要實現對三維模型或者拍照一類截屏功能,還需要另外尋找截取OpenGL渲染區部分的截屏代碼或者截取相機內容的截屏代碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM