美文网首页iOS开发进阶iOS技术交流简友们的精华
iOS实现支付宝双击home键进入后台的毛玻璃效果

iOS实现支付宝双击home键进入后台的毛玻璃效果

作者: 安静守护你 | 来源:发表于2018-07-09 17:01 被阅读0次

今天进入支付宝后,突然发现支付宝新加了信息保护措施(进入后台后显示毛玻璃效果)。苹果手机双击home键,会直接进入系统的switcher页面,在这里列出了当前系统挂起的APP截屏列表,这个截屏是在APP进入后台的时候进行的截屏。
从上面已经可知,系统是在APP将要进入后台的时候对APP进行屏幕截图,那么我们要实现毛玻璃效果,就可以在APP即将要进入后台的时候,改变现实的外观,这样就可以完美实现毛玻璃效果咯。
我实现的思路是:在APP即将进入后台的时候,代码实现屏幕截图,然后将截图进行高斯模糊覆盖在keyWindow上,当APP进入前台的时候,再移除覆盖的截图图片并置空。
下面就直接上代码咯

因为程序将要进入后台的方法是在AppDelegate.m中,所以我们可以在AppDelegate.m中声明一个UIImageView的变量,使用懒加载的形式声明加载(这里随意啦,不使用懒加载也可以直接在- (void)applicationWillResignActive:(UIApplication *)application方法中声明加载)。

声明UIImageView

@interface AppDelegate () 

@property (nonatomic, strong) UIImageView *screenView;

@end

懒加载代码:

- (UIImageView *)screenView {
    if (!_screenView) {
        _screenView = [[UIImageView alloc] initWithFrame:[UIScreen mainScreen].bounds];
        _screenView.image = [[self getNormalImage:[UIApplication sharedApplication].keyWindow] blurImageWithRadius:8];
        _screenView.backgroundColor = [UIColor whiteColor];
        [self.window addSubview:_screenView];
    }
    return _screenView;
}

// 获取屏幕截图
- (UIImage *)getNormalImage:(UIView *)view {
    // kScreenWidth和kScreenHeight均为宏定义,分别表示屏幕的宽和高
    UIGraphicsBeginImageContext(CGSizeMake(kScreenWidth, kScreenHeight));
    
    CGContextRef context = UIGraphicsGetCurrentContext();
    
    [view.layer renderInContext:context];
    
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    
    UIGraphicsEndImageContext();
    
    return image;
}

APP失去焦点(被挂起):

- (void)applicationWillResignActive:(UIApplication *)application {
    // 判断APP当前状态,如果是从活跃状态进入switcher页面,则不进行信息保护
    if (application.applicationState != UIApplicationStateActive) {
        [UIView animateWithDuration:0.4 animations:^{
            self.screenView.alpha = 1;
        }];
    }
}

将要进入后台:

// APP从活跃状态进入后台,直接进行信息保护
- (void)applicationDidEnterBackground:(UIApplication *)application {
    [UIView animateWithDuration:0.4 animations:^{
        self.screenView.alpha = 1;
    }];
}

APP进入前台:

- (void)applicationDidBecomeActive:(UIApplication *)application {
    if (_screenView) {  
        [UIView animateWithDuration:0.4 animations:^{
            self.screenView.alpha = 0;
        } completion:^(BOOL finished) {
            [self.screenView removeFromSuperview];
            self.screenView = nil;
        }];
    }
}

相关文章

  • iOS实现支付宝双击home键进入后台的毛玻璃效果

    今天进入支付宝后,突然发现支付宝新加了信息保护措施(进入后台后显示毛玻璃效果)。苹果手机双击home键,会直接进入...

  • iOS双击Home键,毛玻璃效果

    项目中有时为了安全起见,在双击Home键,退到不活跃状态时,需要添加模糊效果,比如下图: 要实现这种效果,非常简单...

  • iOS开发技巧

    iOS开发技巧 一、调用代码使APP进入后台,达到点击Home键的效果。(私有API) suspend的英文意思有...

  • 双击Home键实现模糊效果

    似乎目前所见这样的效果都是在金融类App中,毕竟钱真的很重要?。在此尝试一下,反正闲着也是闲着(?)。 可知双击H...

  • OC仿支付宝返回到后台添加模糊效果

    最近在使用支付宝的过程中发现当支付宝运行在手机后台,我们双击Home键切换app的时候,支付宝为了保护用户隐私会添...

  • 小细节大体验-隐私保护

    金融类产品(懒投资、招商银行等)打开后进入后台,双击home键进入后台查看时会模糊化产品界面,以更好的保护用户隐私。

  • 2018-01-12

    一、调用代码使APP进入后台,达到点击Home键的效果。 [[UIApplication sharedApplic...

  • iOS 知识点整理

    1.调用代码使APP进入后台,达到点击home键的效果 [[UIApplication sharedApplica...

  • IOS AppDelegate

    ios程序启动顺序 ·启动程序时顺序:构造函数->程序被激活 ·进入切换程序界面(双击home键)执行:程序即将取...

  • 实现div毛玻璃背景

    原文在我的博客☞实现div毛玻璃背景 毛玻璃效果 ios里毛玻璃效果的使用非常多,本文介绍一个实现div毛玻璃背景...

网友评论

  • 瞬csr:blurImageWithRadius这个应该是你的自定义方法吧
    安静守护你:那个是对图片模糊的方法,可以搜索一下 UIImage+ImageEffects 可以研究一下 :smile:

本文标题:iOS实现支付宝双击home键进入后台的毛玻璃效果

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