美文网首页
iOS实现支付宝后台模糊效果

iOS实现支付宝后台模糊效果

作者: Invisible_He | 来源:发表于2019-09-29 18:02 被阅读0次

    废话不多说,先来张图,直接看下效果

    上图的效果就是我们这篇文章要达到的效果。

    对于没做过类似效果的盆友们来说,可能最开始想到的会是,是否有这么一个方法能监听到手机APP进入任务管理或者是进入任务切换这么一个动作?然鹅,事实并非那么麻烦,其实想要实现这种效果只需要监听AppDelegate里的下面两个方法即可

    - (void)applicationDidEnterBackground:(UIApplication*)application

    - (void)applicationWillEnterForeground:(UIApplication*)application

    在这两个方法里需要做的事情也是很简单,就是在- (void)applicationDidEnterBackground:(UIApplication*)application里给window添加一个玻璃效果的view

    在- (void)applicationWillEnterForeground:(UIApplication*)application里让这个玻璃效果的view从window上移除即可

    代码如下,首先添加一个属性

    @interface AppDelegate ()

    /* blurView */

    @property (strong, nonatomic) UIVisualEffectView *blurView;

    @end

    之后在- (void)applicationDidEnterBackground:(UIApplication*)application里在window上添加这个view

    - (void)applicationDidEnterBackground:(UIApplication*)application {

        if(!_blurView) {

            UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];

            _blurView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];

            _blurView.frame = self.window.bounds;

        }

        //进入后台实现模糊效果

        [self.window addSubview:_blurView];

    }

    在即将进入前台的时候,移除这个view

    - (void)applicationWillEnterForeground:(UIApplication*)application {

        [_blurView removeFromSuperview];

    }

    至此,就实现了和支付宝一毛一样的模糊效果了。

    其实网上已经很多此类文章了,我为何在此还要写一些呢,其实就是,网上大部分的文章说的都是在- (void)applicationWillResignActive:(UIApplication*)application这个方法里添加模糊view,在- (void)applicationDidBecomeActive:(UIApplication*)application这个方法里移除模糊view。然鹅我自己也实际试过这种方式,这种方式达到的效果和支付宝的差距甚大,并且因为是在- (void)applicationWillResignActive:(UIApplication*)application方法里添加模糊view,因此会导致下拉通知栏和通知中心的时候都会直接显示这个模糊view,并且由于是在这个- (void)applicationDidBecomeActive:(UIApplication*)application方法中移除模糊view的,就会出现移除模糊view稍有延迟的效果,最终效果都没支付宝的那种实现来得好。我也不知道写这些文章的作者们有没实际的验证过,这种方式不仅会出现下拉通知中心显示模糊view,而且还会在下拉通知中心显示的模糊view最终不会被移除,因为下拉通知中心,之后通知中心上划消失后并不会调用- (void)applicationWillResignActive:(UIApplication*)application这个方法,也就是说,模糊view将不会被移除。

    现在看看官方文档对active和inactive的解释吧,看完后您将豁然开朗

    case active

    The app is running in the foreground and currently receiving events.

    //app当前运行在前台,并且会接收事件

    case inactive

    The app is running in the foreground but is not receiving events. This might happen as a result of an interruption or because the app is transitioning to or from the background.

    //app当前运行在前台但是不接收事件。这种情况可能会发生在中断之后或者是因为app正切换到后台或从后台切换回前台

    case background

    The app is running in the background.

    //app正运行在后台

    因此,这也是我写此篇文章的目的之一吧,就是想让大家能对一个技术点有自己的想法和看法,意思就是,不要盲目全信网上的文章,对文章提到的技术点,最好能亲自验证一下是否正确,即使是你搜到的大部分文章都是一样的答案,您也应该亲自验证一番。

    相关文章

      网友评论

          本文标题:iOS实现支付宝后台模糊效果

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