溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

UIKit框架(7)應(yīng)用程序?qū)ο骍IApplication

發(fā)布時(shí)間:2020-07-15 01:14:21 來源:網(wǎng)絡(luò) 閱讀:448 作者:ymanmeng123 欄目:移動(dòng)開發(fā)

本篇本章介紹:

    UIApplication對象、UIAppDelegate中的方法、App啟動(dòng)過程

    以及狀態(tài)欄的管理、應(yīng)用程序間跳轉(zhuǎn)等實(shí)用功能


  • UIApplication對象介紹

UIApplication對象是應(yīng)用程序的象征,一個(gè)UIApplication對象就代表一個(gè)應(yīng)用程序。

     通過[UIApplication sharedApplication]可以獲得這個(gè)單例對象

+ (UIApplication *)sharedApplication

     一個(gè)iOS程序啟動(dòng)后創(chuàng)建的第一個(gè)對象就是UIApplication對象

     利用UIApplication對象,能進(jìn)行一些應(yīng)用級(jí)別的操作


keyWindow屬性:

@property(nonatomic, readonly) UIWindow *keyWindow   //應(yīng)用程序的主窗口

    Mac環(huán)境下的一個(gè)應(yīng)用是可以具有多個(gè)窗口的,正在獲得用戶操作的創(chuàng)建即為keyWindow

    而iOS下的應(yīng)用只有一個(gè)窗口,就是這個(gè)keyWindow

    UIView及其子類,也可以通過其屬性window獲得這個(gè)window


狀態(tài)欄上的網(wǎng)絡(luò)活動(dòng)指示器控制

@property(nonatomic, getter=isNetworkActivityIndicatorVisible) BOOL networkActivityIndicatorVisible //狀態(tài)欄的網(wǎng)絡(luò)活動(dòng)指示器

    通過改變這個(gè)屬性,可以方便地控制網(wǎng)絡(luò)活動(dòng)指示器的顯示(轉(zhuǎn)動(dòng)的菊花)


手機(jī)桌面App圖標(biāo)上的紅色數(shù)字

@property(nonatomic) NSInteger applicationIconBadgeNumber //圖標(biāo)上的紅色數(shù)字

    通過修改這個(gè)屬性,可以在App圖標(biāo)上顯示提示數(shù)字信息,一般在消息推送的回調(diào)方法中使用


...



     

  • 狀態(tài)欄的管理

自iOS7開始,提供了兩種管理狀態(tài)的方式: 控制器管理、UIApplication對象管理


控制器管理(默認(rèn))

     實(shí)現(xiàn)下面的兩個(gè)方法即可輕松管理狀態(tài)欄

- (UIStatusBarStyle)preferredStatusBarStyle  //狀態(tài)欄的樣式
- (BOOL)prefersStatusBarHidden //狀態(tài)欄是否隱藏


使用UIApplication管理狀態(tài)欄

1)首先修改info.plist

     UIKit框架(7)應(yīng)用程序?qū)ο骍IApplication

2)使用UIApplication單例對象的以下方法

@property(nonatomic, getter=isStatusBarHidden) BOOL statusBarHidden  //狀態(tài)欄是否隱藏
- (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation
@property(nonatomic) UIStatusBarStyle statusBarStyle //狀態(tài)欄樣式
- (void)setStatusBarStyle:(UIStatusBarStyle)statusBarStyle animated:(BOOL)animated
@property(nonatomic, readonly) CGRect statusBarFrame //狀態(tài)欄的frame


     

  • App間跳轉(zhuǎn)

UIApplication有個(gè)功能十分強(qiáng)大的openURL:方法

- (BOOL)openURL:(NSURL *)url

iPhone中一些自帶應(yīng)用的跳轉(zhuǎn)格式:

    用來打電話:

     [[UIApplication sharedApplication] openURL: [NSURL URLWithString:@”tel://10086”];

    用來發(fā)短信:

     [[UIApplication sharedApplication] openURL: [NSURL URLWithString:@”sms://10086”]];

    用來發(fā)郵件 :

     [[UIApplication sharedApplication] openURL: [NSURL URLWithString:@”mailto://123456@qq.com”]];

    請求打開網(wǎng)頁:(轉(zhuǎn)到瀏覽器)

     [[UIApplication sharedAplication] openURL: [NSURL URLWithString:@”http://www.baidu.com”]];


如跳轉(zhuǎn)到AppStore:

https://itunes.apple.com/us/app/zou-yi-zou-ba/idxxx?mt=8&uo=4

    其中xxx是對應(yīng)App的id(在iTunnes-Connect中查詢)



  • UIApplication的代理

移動(dòng)操作都具有致命的的缺點(diǎn):

     app很容被打擾,比如一個(gè)來電或鎖屏都會(huì)導(dǎo)致app進(jìn)入后臺(tái)甚至被終止。

     在很多其他情況會(huì)導(dǎo)致app受到干擾,在app受到干擾時(shí),會(huì)產(chǎn)生一些系統(tǒng)事件

     此時(shí)UIApplication會(huì)通知它的delegate對象,讓delegate代理來處理這些系事件。

Delegate可處理的事件包括:

     應(yīng)用程序的生命周期事件(如程序啟動(dòng)和關(guān)閉)、系統(tǒng)事件(如來電)、內(nèi)存警告…

每次新建完項(xiàng)目,都帶個(gè)帶有”AppDelegate”類,它就是UIApplication的代理。

     該類默認(rèn)已經(jīng)遵守了UIApplicationDelegate協(xié)議,已經(jīng)是UIApplication的代理。

     UIKit框架(7)應(yīng)用程序?qū)ο骍IApplication



  • App啟動(dòng)過程

1)main函數(shù)中執(zhí)行了一個(gè)UIApplicationMain這個(gè)函數(shù)

int UIApplicationMain ( int argc, char *argv[], NSString *principalClassName,NSString *delegateClassName );

     該函數(shù)接收了: 命令行參數(shù) 、UIApplication子類名 、UIApplication代理類名

2)UIApplicationMain函數(shù)會(huì)根據(jù)principalClassName創(chuàng)建 UIApplication對象,根據(jù)delegateClassName創(chuàng)建一個(gè)delegate對象,并將該delegate對象賦值給 UIApplication對象中的delegate屬性

3)接著會(huì)建立應(yīng)用程序的Main Runloop(事件循環(huán)),進(jìn)行事件的處理(首先會(huì)在程序完畢后調(diào)用delegate對象的application:didFinishLaunchingWithOptions:方法)

4)程序正常退出時(shí)UIApplicationMain函數(shù)才返回





向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI