您的位置:首页 > 移动开发 > IOS开发

IOS截屏功能的实现

2015-11-13 10:56 399 查看
IOS截屏功能的实现

实现方法一、

#pragma mark - 截屏按钮事件

- (IBAction)screenShotAction:(UIButton *)sender {

//_screenImg为一个UIImageView控件

_screenImg.image =[self screenView:self.view.window];//传值self.view.window就是截整个眼睛可以看到的界面

// _screenImg.image =[self screenView:self.view];//传值self.view 不包含导航栏和TabBar

}

#pragma mark - 截屏功能的实现

- (UIImage*)screenView:(UIView *)view{

CGRect rect = view.frame;

UIGraphicsBeginImageContext(rect.size);

CGContextRef context = UIGraphicsGetCurrentContext();

[view.layer renderInContext:context];//如果传值self.view.window,整个界面都在截图中;如果传值self.view,截图无导航栏,无TabBar

//[self.navigationController.view.layer renderInContext:context];//如果传值self.view,注释上句,开启此句截图有导航栏,无TabBar

UIImage *img = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return img;

}

实现方法二、

#pragma mark - 全屏截屏功能的实现

- (UIImage *)getScreenshot {

CGSize imageSize = [[UIScreen mainScreen] bounds].size;

UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0);

CGContextRef context = UIGraphicsGetCurrentContext();

for (UIWindow *window in [[UIApplication sharedApplication] windows]) {

if (![window respondsToSelector:@selector(screen)] || [window screen] == [UIScreen mainScreen]) {

CGContextSaveGState(context);

CGContextTranslateCTM(context, [window center].x, [window center].y);

CGContextConcatCTM(context, [window transform]);

CGContextTranslateCTM(context,

-[window bounds].size.width * [[window layer] anchorPoint].x,

-[window bounds].size.height * [[window layer] anchorPoint].y);

[[window layer] renderInContext:context];

CGContextRestoreGState(context);

}

}

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

//保存图片到相册里面

// UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);

return image;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: