手机截屏直接分享&反馈

前言

       目前市面上的一些主流App,比如:京东、淘宝、支付宝 等,他们都含所有手机截屏分享或者反馈的功能。它们实现这个功能的作用到底为了什么?个人感觉是:为了满足App的应用需求,同时更重要的是用户不用在点击手机的【Home】键返回到主页,再打开WeChat、QQ、Sina等App在找到我们截取的图片在进行反馈和分享。那么这个功能怎么实现呢?请您往下看……

一 、题为手机截屏,那怎么知道手机截屏了呢?

       首先这也是我们要首先介绍的一个重要功能。在我们的 UIKit 里面的  UIApplication.h  中有一个通知的Key。该通知如下:

// This notification is posted after the user takes a screenshot (for example by pressing both the home and lock screen buttons)
UIKIT_EXTERN NSNotificationName const UIApplicationUserDidTakeScreenshotNotification NS_AVAILABLE_IOS(7_0);

通过上面方法的说明可以知道当我们同时按住  Home  和 锁屏键系统就会触发该通知。那么为了能够在整个App中都能实现触发该通知,我们就在 App 的  AppDelegate.h  中添加监控该通知的代码,如下:

**/**!
 添加截屏事件的观察者
 */
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(screenshotsEventMethod) name:UIApplicationUserDidTakeScreenshotNotification object:nil];**

二、我们已经知道用户触发了截屏,那么截屏功能怎么实现呢?

1、我们首先创建一个大小都为 0 的  CGSize  实例。代码如下:
CGSize imageSize = CGSizeZero ;
2、首先截屏我们要知道当前用户的手机是处于那种方向(竖屏&横屏),并确定截屏的图像 CGSize 的大小。代码如下:
/**
 确定当前屏幕的方向
 */
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
if (UIInterfaceOrientationIsPortrait(orientation)) {
    /**
     竖屏幕
     */
    imageSize = [UIScreen mainScreen].bounds.size;
}else{
    /**
     横屏幕
     */
    imageSize = CGSizeMake([UIScreen mainScreen].bounds.size.height, [UIScreen mainScreen].bounds.size.width);
}
3、我们通过 CGSize  开启图像的上下文,在有图像的  View   获得 CGContextRef  上下文。代码如下:
/**
 开启图像上下文,并设置上下文
 */
UIGraphicsBeginImageContext(imageSize);
/**
 获得上下文
 */
CGContextRef cContext = UIGraphicsGetCurrentContext() ;
4、通过遍历 App视图显示当前的所有窗口,来获取截取的图像。关键代码如下:
for (UIWindow * tempWindow in [UIApplication sharedApplication].windows) {
    /**
     先保存上下文,便于恢复场景
     */
    CGContextSaveGState(cContext) ;
    /**
     调整上下文的位置
     */
    CGContextTranslateCTM(cContext, t
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值