IOS截屏功能的实现

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;

}



  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shiningchen322

我不需要打赏,谢谢

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值