恩美第二个APP项目

iOS 截图

2017-11-27  本文已影响23人  goyohol

最近公司项目完了!闲的每天都只有写下简书!把以前总结的东西都归纳出来!😂😂😂



包括:截屏、截取视图 以及 截取指定视图范围!!


方法如下:

/** 截屏 */
-(UIImage *)cutScreen {
    return [self cutFromView:[UIApplication sharedApplication].keyWindow];
}

/** 从某视图 获取其图像 */
-(UIImage *)cutFromView:(UIView *)view
{
    //开启 图形上下文
    UIGraphicsBeginImageContextWithOptions(view.frame.size, NO, 0.0f);
    //获取 上下文
    CGContextRef context = UIGraphicsGetCurrentContext();
    if (!context) {
        return nil;
    }

    //在新建的图形上下文中,渲染view的layer
    [view.layer renderInContext:context];

    //设定颜色:透明
    [[UIColor clearColor] setFill];

    //获取图片
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

    //关闭图形上下文
    UIGraphicsEndImageContext();

    return image;
}


/** 从某视图 获得指定范围内的图像 */
-(UIImage *)cutImageFromView:(UIView *)view andFrame:(CGRect)rect
{
    //开启 图形上下文
    UIGraphicsBeginImageContext(view.frame.size);
    //获取 上下文
    CGContextRef context = UIGraphicsGetCurrentContext();
    if (!context) {
        return nil;
    }    
    CGContextSaveGState(context);

    //获取 截图的范围
    UIRectClip(rect);//图片裁剪

    //在新建的图形上下文中,渲染view的layer
    [view.layer renderInContext:context];

    //设定颜色:透明
    [[UIColor clearColor] setFill];

    //获取图片
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

    //关闭图形上下文
    UIGraphicsEndImageContext();

    return  image;
}


展示例子🌰

ViewController里:




按钮点击事件

在“-(void)clickToShowScreenCut { }”里:







图片保存本地

NSData *data = UIImageJPEGRepresentation([self cutScreen], 1);
//将对应的数据保存为图片文件
[data writeToFile:[NSHomeDirectory() stringByAppendingPathComponent:@"Documents/blabla.jpg"] atomically:YES];














goyohol's essay

上一篇下一篇

猜你喜欢

热点阅读