1. 程式人生 > >如何雙擊home鍵,使app自帶毛玻璃效果,增強其安全性

如何雙擊home鍵,使app自帶毛玻璃效果,增強其安全性

一、ios應用程式的啟動邏輯

1、main.m檔案中的main是ios程式啟動的入口,main函式內部會呼叫UIApplicationMain函式,建立UIApplication物件和一個main runloop迴圈,當main runloop接收到事件後,會傳遞給AppDelegate物件去處理。

#import <UIKit/UIKit.h>
#import "AppDelegate.h"

int main(int argc, char * argv[]) {
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class
])); } }

2、UIApplication是一個單例物件,它在應用程式中只存在一份,也是ios應用程式啟動後建立的第一個物件。

二、AppDelegate中各方法的作用

應用程式啟動完畢就會呼叫該方法

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    return YES;
}

應用程式將要進入非活動狀態執行,在此期間,應用程式不接受訊息或事件,比如來電

- (void)
applicationWillResignActive:(UIApplication *)application { }

應用程式已經進入後臺執行

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

}

應用程式將要進入活動狀態

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

}

應用程式進入前臺,處於活動狀態

- (void)applicationDidBecomeActive:(UIApplication
*)
application { }

應用程式將要退出,通常用於儲存書架和一些推出前的清理工作

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

}

系統記憶體不足,需要進行清理工作

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

}

三、實現毛玻璃效果

@interface AppDelegate ()

@property (nonatomic, strong, nullable) UIVisualEffectView *visualEffectView;

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

    UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
    self.visualEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
    self.visualEffectView.alpha = 1;
    self.visualEffectView.frame = self.window.frame;
    [self.window addSubview:self.visualEffectView];
//    [UIView animateWithDuration:0.5 animations:^{
//        self.visualEffectView.alpha = 1;
//    }];
}
- (void)applicationDidBecomeActive:(UIApplication *)application {

    [UIView animateWithDuration:0.5 animations:^{
        self.visualEffectView.alpha = 0;
    } completion:^(BOOL finished) {
        [self.visualEffectView removeFromSuperview];
    }];  
}