IOS給任意UIView截屏 – iPhone手機開發技術文章 iPhone軟體開發教學課程

[cpp] 

//獲得某個window的某個subView  

UIView *view = [[[[[UIApplication sharedApplication] windows] objectAtIndex:0] subviews] lastObject];  

  

NSInteger index = 0;//用來給保存的png命名  

for (UIView *subView in [view subviews]) {//遍歷這個view的subViews  

if ([subView isKindOfClass:NSClassFromString(@"MKMapView")]) {//找到自己需要的subView  

NSLog(@"fund");  

//支持retina高分的關鍵  

if(UIGraphicsBeginImageContextWithOptions != NULL)  

{  

UIGraphicsBeginImageContextWithOptions(subView.frame.size, NO, 0.0);  

} else {  

UIGraphicsBeginImageContext(subView.frame.size);  

}  

  

//獲取圖像  

[subView.layer renderInContext:UIGraphicsGetCurrentContext()];  

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();  

UIGraphicsEndImageContext();  

  

//保存圖像  

NSString *path = [NSHomeDirectory() stringByAppendingFormat:@"/%d.png",index];  

if ([UIImagePNGRepresentation(image) writeToFile:path atomically:YES]) {  

index += 1;  

NSLog(@"Succeeded! %@",path);  

}  

else {  

NSLog(@"Failed!");  

}  

}  

}  

 

You May Also Like