您好,登錄后才能下訂單哦!
本篇本章介紹:
UIApplication對象、UIAppDelegate中的方法、App啟動過程
以及狀態欄的管理、應用程序間跳轉等實用功能
UIApplication對象介紹
UIApplication對象是應用程序的象征,一個UIApplication對象就代表一個應用程序。
通過[UIApplication sharedApplication]可以獲得這個單例對象
+ (UIApplication *)sharedApplication
一個iOS程序啟動后創建的第一個對象就是UIApplication對象
利用UIApplication對象,能進行一些應用級別的操作
keyWindow屬性:
@property(nonatomic, readonly) UIWindow *keyWindow //應用程序的主窗口
Mac環境下的一個應用是可以具有多個窗口的,正在獲得用戶操作的創建即為keyWindow
而iOS下的應用只有一個窗口,就是這個keyWindow
UIView及其子類,也可以通過其屬性window獲得這個window
狀態欄上的網絡活動指示器控制
@property(nonatomic, getter=isNetworkActivityIndicatorVisible) BOOL networkActivityIndicatorVisible //狀態欄的網絡活動指示器
通過改變這個屬性,可以方便地控制網絡活動指示器的顯示(轉動的菊花)
手機桌面App圖標上的紅色數字
@property(nonatomic) NSInteger applicationIconBadgeNumber //圖標上的紅色數字
通過修改這個屬性,可以在App圖標上顯示提示數字信息,一般在消息推送的回調方法中使用
...
狀態欄的管理
自iOS7開始,提供了兩種管理狀態的方式: 控制器管理、UIApplication對象管理
控制器管理(默認)
實現下面的兩個方法即可輕松管理狀態欄
- (UIStatusBarStyle)preferredStatusBarStyle //狀態欄的樣式 - (BOOL)prefersStatusBarHidden //狀態欄是否隱藏
使用UIApplication管理狀態欄
1)首先修改info.plist
2)使用UIApplication單例對象的以下方法
@property(nonatomic, getter=isStatusBarHidden) BOOL statusBarHidden //狀態欄是否隱藏 - (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation @property(nonatomic) UIStatusBarStyle statusBarStyle //狀態欄樣式 - (void)setStatusBarStyle:(UIStatusBarStyle)statusBarStyle animated:(BOOL)animated @property(nonatomic, readonly) CGRect statusBarFrame //狀態欄的frame
App間跳轉
UIApplication有個功能十分強大的openURL:方法
- (BOOL)openURL:(NSURL *)url
iPhone中一些自帶應用的跳轉格式:
用來打電話:
[[UIApplication sharedApplication] openURL: [NSURL URLWithString:@”tel://10086”];
用來發短信:
[[UIApplication sharedApplication] openURL: [NSURL URLWithString:@”sms://10086”]];
用來發郵件 :
[[UIApplication sharedApplication] openURL: [NSURL URLWithString:@”mailto://123456@qq.com”]];
請求打開網頁:(轉到瀏覽器)
[[UIApplication sharedAplication] openURL: [NSURL URLWithString:@”http://www.baidu.com”]];
如跳轉到AppStore:
https://itunes.apple.com/us/app/zou-yi-zou-ba/idxxx?mt=8&uo=4
其中xxx是對應App的id(在iTunnes-Connect中查詢)
UIApplication的代理
移動操作都具有致命的的缺點:
app很容被打擾,比如一個來電或鎖屏都會導致app進入后臺甚至被終止。
在很多其他情況會導致app受到干擾,在app受到干擾時,會產生一些系統事件
此時UIApplication會通知它的delegate對象,讓delegate代理來處理這些系事件。
Delegate可處理的事件包括:
應用程序的生命周期事件(如程序啟動和關閉)、系統事件(如來電)、內存警告…
每次新建完項目,都帶個帶有”AppDelegate”類,它就是UIApplication的代理。
該類默認已經遵守了UIApplicationDelegate協議,已經是UIApplication的代理。
App啟動過程
1)main函數中執行了一個UIApplicationMain這個函數
int UIApplicationMain ( int argc, char *argv[], NSString *principalClassName,NSString *delegateClassName );
該函數接收了: 命令行參數 、UIApplication子類名 、UIApplication代理類名
2)UIApplicationMain函數會根據principalClassName創建 UIApplication對象,根據delegateClassName創建一個delegate對象,并將該delegate對象賦值給 UIApplication對象中的delegate屬性
3)接著會建立應用程序的Main Runloop(事件循環),進行事件的處理(首先會在程序完畢后調用delegate對象的application:didFinishLaunchingWithOptions:方法)
4)程序正常退出時UIApplicationMain函數才返回
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。