美文网首页
iOS 实现摇一摇截屏功能

iOS 实现摇一摇截屏功能

作者: 王煜仁 | 来源:发表于2021-10-15 17:09 被阅读0次

今天领导在群里发了这样一个图


图一

并配上了这样一句话


图二
意图明显,安排~
安排

实现

经过不那么久的时间研究,发现实现这个小功能非常简单,只需要调用系统内置的几个代理方法即可实现,具体实现如下

1、创建一个UIViewController的分类,在.m文件中UIViewController+Category.m代码如下
- (BOOL)becomeFirstResponder {
    return YES;
}

- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event {
    NSLog(@"开始摇一摇");
}

- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event {
    NSLog(@"取消摇一摇");
}

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
    NSLog(@"结束摇一摇");
    /// 可以获取UISwitch状态(沙盒),如果关闭了,直接return
    if (event.type == UIEventSubtypeMotionShake) {
        /// 震动反馈
        AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
    }
    /// 在这里做业务处理
    /// 可以在这里获取截图[self handlerScreenshot];做界面跳转等
}
2、在需要使用该功能的ViewController代理中,如下
#import "UIViewController+Category.h"

- (void)viewDidLoad {
    [super viewDidLoad];
     /// 打开应用手持震动响应
    [[UIApplication sharedApplication] setApplicationSupportsShakeToEdit:YES];
    /// 
    [self becomeFirstResponder];
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    /// 
    [self resignFirstResponder];
}
/// 至此,当前控制器已经可以响应手持震动了
/// 如果需要在整个应用程序中都支持该功能,将#import写在pch文件中
/// 或者基类控制器中,然后在基类代理中实现以上调用过程即可
3、关于截屏
/// 该方法写在UIViewController+Category.m文件中
/// 高质量截屏
#pragma mark - 处理截屏
- (UIImage *)handlerScreenshot {
    UIWindow *window = [UIApplication sharedApplication].keyWindow;
//    UIGraphicsBeginImageContext(window.frame.size); /// 这个方式获取的图片清晰度很低
    UIGraphicsBeginImageContextWithOptions(window.bounds.size, YES, 0.0);
    [window.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return screenshot;
}
补充

关于UISwitch控制的实现,使用沙盒存一个bool值即可,懂的都懂~
关于在跳转后的控制器中不需要这个功能的时候,可以使用以下代码

/// 关闭手机震动交互----全局配置的时候,这个好像不起作用。
/// 建议使用开关的状态值去控制这个功能的交互
[[UIApplication sharedApplication] setApplicationSupportsShakeToEdit:NO];

注意,注释有时候很有用,根据业务需求,局部和全局的控制自行调整

相关文章

  • iOS 实现摇一摇截屏功能

    今天领导在群里发了这样一个图 并配上了这样一句话 意图明显,安排~ 实现 经过不那么久的时间研究,发现实现这个小功...

  • iOS摇一摇截屏功能的实现

    1.摇一摇功能的实现: 在viewDidLoad方法中调用: 在viewWillAppear方法中调用: 为了防止...

  • ios 摇一摇实现

    原文地址:iOS使用CoreMotion实现摇一摇功能 现在网上介绍的iOS摇一摇功能,基本是以借助系统的Shak...

  • iOS实现“摇一摇”与“扫一扫”功能示例代码

    本篇文章主要介绍了iOS实现“摇一摇”与“扫一扫”功能示例代码;有需要的朋友可以作为参考下: “摇一摇”功能的实现...

  • 摇一摇

    对于摇一摇功能 iOS 中已经提供了接口.直接调用就好了.实现步骤:1). 监听摇一摇方法 2). 实现下面的方法...

  • iOS摇一摇功能实现

    看到微信的摇一摇功能是不是感觉很神奇呢?其实在iOS里想要实现摇一摇功能很简单,方法如下: 先在targets -...

  • iOS 摇一摇功能实现

    实现摇一摇功能只需要当前Controller支持摇动功能,Controller默认是支持的,同时让它成为第一响应者...

  • iOS 摇一摇功能 可自定义摇动力度等

    现在网上介绍的iOS摇一摇功能,基本是以借助系统的ShakeToEdit功能来实现,什么是ShakeToEdit?...

  • iOS屏幕截图功能

    iOS7.0之前的系统,可以通过以下代码实现截屏功能。 iOS7.0之后,系统中封装了截屏的方法- (UIView...

  • iOS「摇一摇」功能的实现

    iOS 系统在 UIResponder 类中提供了一个摇一摇的实现方法,大体实现思路为: 想让哪个 VC 实现摇一...

网友评论

      本文标题:iOS 实现摇一摇截屏功能

      本文链接:https://www.haomeiwen.com/subject/hwsmoltx.html