给界面上任何控件截图并保存为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;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值