91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

UIKit框架(7)應用程序對象UIApplication

發布時間:2020-07-15 01:14:21 來源:網絡 閱讀:452 作者:ymanmeng123 欄目:移動開發

本篇本章介紹:

    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

     UIKit框架(7)應用程序對象UIApplication

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的代理。

     UIKit框架(7)應用程序對象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函數才返回





向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阳山县| 彩票| 凤阳县| 都江堰市| 道真| 洪泽县| 开封县| 宁乡县| 厦门市| 桃源县| 林甸县| 武安市| 北京市| 彭州市| 陈巴尔虎旗| 麟游县| 宜阳县| 大邑县| 二连浩特市| 乌兰察布市| 麦盖提县| 金门县| 衡山县| 东光县| 古田县| 瑞丽市| 历史| 搜索| 崇礼县| 苍南县| 朔州市| 葵青区| 台南市| 定西市| 府谷县| 从江县| 龙山县| 延寿县| 博湖县| 县级市| 章丘市|