Fork me on GitHub

给界面上任何控件截图并保存为PNG的方法

 UIView *view = [[[[[UIApplication sharedApplication] windows] objectAtIndex:1] subviews] lastObject];//获得某个window的某个subView
 
NSInteger index = 0;//用来给保存的png命名
for (UIView *subView in [view subviews]) {//遍历这个view的subViews
if ([subView isKindOfClass:NSClassFromString(@"UIImageView")] || [subView isKindOfClass:NSClassFromString(@"UIThreePartButton")]) {//找到自己需要的subView

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!");
}
else {

附:截屏代码
 UIGraphicsBeginImageContext(self.view.bounds.size);

[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];

UIImage *image= UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

UIImageWriteToSavedPhotosAlbum(image, self, nil, nil);


    在91助手上常见iPhone屏幕截图的功能,于是就开始想办法,看能不能手动把屏幕截图做出来。下面这个函数的代码,就是根据UIView上的 显示内容生成一张屏幕截图。值得注意的是,其中引用了Quartz2D中的函数,所以要使用的话要在文件头部增加一个引用。
#import QuartzCore/QuartzCore.h
-(UIImage *)getImageFromView:(UIView *)orgView{
UIGraphicsBeginImageContext(orgView.bounds.size); 
[orgView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); return image;
}

posted on 2012-02-14 09:50  pengyingh  阅读(4876)  评论(0编辑  收藏  举报

导航