越來(lái)越多App開始注重對(duì)于信息的保護(hù)弧械,如支付寶八酒、掌上生活等App在退到后臺(tái)(回到桌面或者切換App),會(huì)加上一個(gè)保護(hù)層刃唐,如下圖支付寶的界面:
支付寶保護(hù)界面
這個(gè)其實(shí)很簡(jiǎn)單羞迷,我們只需要在AppDelegate的applicationDidEnterBackground方法中添加一個(gè)保護(hù)界面,在applicationDidBecomeActive方法中把這個(gè)保護(hù)界面移除掉就画饥,就初步實(shí)現(xiàn)了保護(hù)的效果闭树。
初步封裝了一個(gè)類來(lái)實(shí)現(xiàn),代碼如下:
JQBackgroundSafeView.h
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface JQBackgroundSafeView : UIView
/**
請(qǐng)?jiān)?AppDelegate 中的 didFinishLaunchingWithOptions調(diào)用
*/
+ (void)initSafeView;
/**
請(qǐng)?jiān)?AppDelegate 中的 applicationDidEnterBackground調(diào)用
*/
+ (void)addSafeView;
/**
請(qǐng)?jiān)?AppDelegate 中的 applicationDidBecomeActive調(diào)用
*/
+ (void)removeSafeView;
@end
NS_ASSUME_NONNULL_END
JQBackgroundSafeView.m
#import "JQBackgroundSafeView.h"
@interface JQBackgroundSafeView ()
@property (nonatomic,assign) BOOL isFinishLaunching;
@property (nonatomic,strong) UIView *safeView;
@end
@implementation JQBackgroundSafeView
+ (instancetype)shareInstance
{
static JQBackgroundSafeView *_mySingle = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_mySingle = [[JQBackgroundSafeView alloc] initWithFrame:UIScreen.mainScreen.bounds];
[_mySingle setBackgroundColor:[UIColor clearColor]];
UIBlurEffect *blurEffect =[UIBlurEffect effectWithStyle:UIBlurEffectStyleRegular];
UIVisualEffectView *effectView =[[UIVisualEffectView alloc]initWithEffect:blurEffect];
effectView.frame = UIScreen.mainScreen.bounds;
[_mySingle addSubview:effectView];
});
return _mySingle;
}
+ (void)initSafeView {
[JQBackgroundSafeView shareInstance].isFinishLaunching = YES;
}
+ (void)addSafeView {
if (![JQBackgroundSafeView shareInstance].isFinishLaunching) {
[[[UIApplication sharedApplication] keyWindow] addSubview:[JQBackgroundSafeView shareInstance]];
}
}
+ (void)removeSafeView {
[JQBackgroundSafeView shareInstance].isFinishLaunching = NO;
[[JQBackgroundSafeView shareInstance] removeFromSuperview];
}
@end
實(shí)現(xiàn)的話荒澡,如JQBackgroundSafeView.h的注釋寫的那樣报辱,只要在AppDalegate中調(diào)用JQBackgroundSafeView的類方法即可:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
[JQBackgroundSafeView initSafeView];
return YES;
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
[JQBackgroundSafeView addSafeView];
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
[JQBackgroundSafeView removeSafeView];
}
這里只是實(shí)現(xiàn)了一個(gè)毛玻璃效果保護(hù)頁(yè),如果想要實(shí)現(xiàn)其他效果的話就稍微修改下即可。