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;
}
实现方法一、
#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;
}
相关文章推荐
- 《IT蓝豹》高仿花田ios版标签移动效果
- iOS中关闭屏幕旋转功能时如何判断屏幕方向
- 《IT蓝豹》高仿花田ios版标签移动效果
- ios 生成二维码
- iOS上如何让按钮文本左对齐问题
- iOS工程师常用的命令行命令总结
- iOS - 音乐 AVFoundation.framwork
- iOS7适配
- Github上iOS开源项目分类及
- iOS-添加边框
- iOS9 开发新特性 Spotlight使用
- 一些题目iOS
- IOS的通知
- 修改图像大小的方法,IOS图片缩放功能
- iOS开发-常用第三方开源框架介绍
- iOS 代理为啥要用weak修饰? (刨根问底一)
- iOS 万能跳转界面方法 (runtime实用篇一)
- iOS 9音频应用播放音频之ios9音频基本功能
- iOS之应用程序国际化
- iOS Animations