屏幕截图

用代码写的用于ios中的屏幕截图,有时候我们在应用中需要加入屏幕截图的功能,比如说游戏的最高纪录,玩家刷新了游戏的纪录用于纪录一些具有历史性的、里程碑式的一些小事情……

所以这次分享一个屏幕截图的方法,可能比较常用吧……?

先摆上一张图在UIview上面,截图的方法实现慢慢来,不急,我这次没有吧截图的方法提取出来,就直接堆在VIewController里面了,不要问为什么,懒,任性……☺️

- (void)viewDidLoad {
    [super viewDidLoad];

    //首先创建一张照片来做标志,方便此后查证是否有完成屏幕截图的功能。
    UIImage* image = [UIImage imageNamed:@"image"];
    UIImageView* imageView = [[UIImageView alloc] initWithImage:image];
    //设置图片缩放的倍数
    float scale =self.view.frame.size.width / image.size.width;
    //设置上下的间隔
    float margin = (self.view.frame.size.height - image.size.height*scale)*0.5;
    //设置imageView的位置尺寸
    imageView.frame = CGRectMake(0, margin, image.size.width*scale, image.size.height*scale);
    //加入控制器的view中
    [self.view addSubview:imageView];
}

然后就在viewController里面直接实现屏幕触控的touch方法了,在里面实现屏幕截图的方法,运行的时候只要点一下屏幕就可以保存图片在指定的路径了。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    //实现屏幕的点击方法,并设置位图上下文的尺寸为当前屏幕的大小
    UIGraphicsBeginImageContext([UIScreen mainScreen].bounds.size);

    //将当前的位图上下文渲染为当前屏幕的内容
    //我们屏幕上之所以能看到东西,都是因为有layer!(这句话怎么听得这么熟悉?!对,写UIWindow的时候我也是这么写得……)
    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
    //这个方法不是获取图形上下文的吗?!!!
    //这么说也没错,在drawRect里面获取的是图形上下文,而在其他地方获得的是位图上下文。

    //创建一个UIImage获得当前位图上下文的内容
    UIImage* image = UIGraphicsGetImageFromCurrentImageContext();

    //结束位图上下文的编辑
    UIGraphicsEndImageContext();

    //定义一个NSData对象将UIImage对象转换成png图像
    NSData* PNGimage = UIImagePNGRepresentation(image);
    [PNGimage writeToFile:@"/Users/housn-k/Desktop/getScreenContext.png" atomically:YES];

}

运行效果:
【图1】
博客代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值