iOS开发日记19-7.0之后的截屏方法

今天博主有一个截屏的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步.

iOS7.0之后废除了之前常用的截屏方法,也新增了截屏的API.代码相对简单,今天就贴出来,大家自行研究.

1.

-(void) screenShot

{

UIGraphicsBeginImageContext(self.view.bounds.size);

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

UIImage *image= UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

NSLog(@"image:%@",image);

UIImageView *imaView = [[UIImageView alloc] initWithImage:image];

imaView.frame = CGRectMake(0, 0, 100, 100);

[self.view addSubview:imaView];

UIImageWriteToSavedPhotosAlbum(image, self, nil, nil);

}

2.

-(void)srceedShot2

{

//延迟两秒保存

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

//获取图形上下文

//    UIGraphicsBeginImageContext(self.view.frame.size);

UIGraphicsBeginImageContext(self.view.frame.size);

//将view绘制到图形上下文中

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

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

//将截屏保存到相册

UIImage *newImage=UIGraphicsGetImageFromCurrentImageContext();

UIImageWriteToSavedPhotosAlbum(newImage,self, @selector(image:didFinishSavingWithError:contextInfo:), nil);

});}

//保存至相册后的回调

- (void)image: (UIImage *) image didFinishSavingWithError: (NSError *) error contextInfo: (void *) contextInfo

{

NSString *msg =nil ;

if(error){

msg = @"保存图片失败" ;

}else{

msg = @"保存图片成功" ;

}

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"保存图片结果提示"

message:msg

delegate:self

cancelButtonTitle:@"确定"

otherButtonTitles:nil];

[alert show];

}

3.

-(void)screenShot3

{

CGSize size = self.view.bounds.size;

UIGraphicsBeginImageContextWithOptions(size, NO, [UIScreen mainScreen].scale);

CGRect rec = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y, self.view.bounds.size.width, self.view.bounds.size.height);

[self.view drawViewHierarchyInRect:rec afterScreenUpdates:YES];

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

NSData * data = UIImagePNGRepresentation(image);

NSString *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).lastObject;

NSString *filename = [path stringByAppendingPathComponent:@"foo.png"];

[data writeToFile:filename atomically:YES];

NSLog(@"***********%@",filename);

}

时间: 2024-11-08 23:31:15

iOS开发日记19-7.0之后的截屏方法的相关文章

小胖说事22-----iOS开发技巧之取消键盘响应和截屏功能

1.UILable内容模糊 在非Retina的iPad mini 的屏幕上,一个UILable的frame的origin值如果是有小数位(如0.5),就会造成显示模糊,所以最好还是用整数值的origin. 2.取消键盘响应 取消键盘响应事件,一般都会用到resignFirstResponder,但是还有三种方法可以取消键盘的响应. 第一种:重载UIViewcontroller中的touchesBegin方法,然后在里边执行 [self.view endEditing:YES]:这样单击UIVie

ios 开发日记 13-剖析网易新闻标签栏视图切换(addChildViewController属性介绍)

iOS开发 剖析网易新闻标签栏视图切换(addChildViewController属性介绍) 时间 2014-06-25 21:45:21  CSDN博客 原文  http://blog.csdn.net/hmt20130412/article/details/34523235 主题 网易iOS开发 本来只是打算介绍一下addChildViewController这个方法的,正好今天朋友去换工作面试问到网易新闻标签栏效果的实现,就结合它,用个小Demo实例介绍一下:(具体解释都写在了Demo里

iOS开发日记31-Block终极篇

今天博主有一个Block的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步. 1.什么是Block      Block是一个C级别的语法以及运行时的一个特性,和标准C中的函数(函数指针)类似,但是其运行需要编译器和运行时支持,从ios4.0开始就很好的支持Block. 2.在iOS开发中,什么情况下使用Block      Block除了能够定义参数列表.返回类型外,还能够获取被定义时的词法范围内的状态(比如局部变量),并且在一定条件下(比如使用__block变量)能够修改这些状态.此

iOS开发日记16-动画Animation

今天博主有一个动画Animation的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步. iOS开发中的动画分为两种:一种为UIView动画,又称隐式动画,动画后frame的数值发生了变化.另一种是CALayer动画,又称显示动画,动画后模型层的数据不会发生变化,图形回到原来的位置.但是在实际开发中,因为UIView可以相应用户交互,所以UIView动画用的多. 一.UIview的动画 1.实现方式:动画块,block begin //设置动画效果  修改属性值,动画时长等等 conmm

iOS开发系列--Swift 3.0

概述 从写第一篇Swift文章的时候到现在Swift已经从1.2发展到了今天的3.0,这期间由于Swift目前还在发展阶段并不能向下兼容,因此第一篇文章中的部分代码在当前的Xcode环境中已经无法运行.在WWDC16上Apple公布了Swift3.0,从中可以看出Apple对Swift的重视,以及Swift开源半年以来的进步.尽管对于开发人员来说Swift3.0的变化会令你的程序几乎处处报错,但是试想一下如果Apple没有追求极致的精神又怎么会做出如此多的更改.今天的文章将重点介绍:What's

iOS开发日记26-详解时间戳

今天博主有一个时间戳的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步. iOS开发中,我们在很多情况下都会遇到使用当下时间作为参数的情况,这称之为时间戳.在iOSSDK中,与时间戳相关的API主要有三个,NSDate,NSCalendar和NSDate?Components. NSDate 就是一个绝对的时间,可以换算成相对1970s的时差. NSCalendar 顾名思义就是日历,封装了系统如何按照年月日的方式来组织时间,组织时间的方式和地区,时区有很大关系. NSDate?Comp

ios 开发日记 9 - 升级xcode7报错

升级xcode7之后3.8报错 刚刚升级了xcode7,运行之前的游戏报错,以为游戏有问题,就重新用3.8 new了一个新的项目,什么也不做修改,然后一样报错,不能运行.有谁知道改什么能行吗?xcode中的参数用的不多,不是很懂.又知道的求告诉. ld: in /Users/dpclove/Library/Developer/Xcode/DerivedData/Test-bembprmvbnfqudbakzjwbwwllifl/Build/Products/Debug-iphonesimulat

ios开发日记 - 8 模拟器截屏

Phone/iPad开发模拟器(Simulator)截屏 Command+Shift+3Capture entire screen and save as a file截取整个屏幕,保存png文件到桌面 Command+Control+Shift+3Capture entire screen and copy to the clipboard截取整个屏幕,保存到剪切板 Command+Shift+4Capture dragged area and save as a file截取屏幕指定区域,并

ios 开发日记 9 - 一些 UIView 中管理 Subview 常用的方法

一些 UIView 中管理 Subview 常用的方法 (2013-01-22 10:04:40) 标签: ios subview it 分类: 關于IOS學習 一些 UIView 中管理 Subview 常用的方法 一个 UIView 里面可以包含许多的 Subview(其他的 UIView),而这些 Subview 彼此之间是有所谓的阶层关系,这有点类似绘图软体中图层的概念,下面程式码示演示了几个在管理图层(Subview)上常用的方法,其程式码如下. 首先是大家最常使用的新增和移除 Sub