UIApplication-UI進階

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/bao_libra/article/details/51407941

  • UIApplication對象是應用程序的象徵
  • 每個應用都有自己的UIApplication對象,而且是單例的
  • 通過[UIApplicationsharedApplication]獲得這個單例對象
  • 一個iOS程序啓動後創建的第一個對象就是UIApplication對象
  • 利用UIApplication對象,能進行一些應用級別的操作 


1* 整個APP中只有一個UIApplication,不能通過[[UIApplicationalloc]init]創建對象,否則程序一運行就會報錯


錯誤信息如下(一般查看錯誤原因,reason就好):



2* UIApplication對象屬於單例對象,一般情況下單例對象的方法都是以share單詞開頭


通過shareApplication方法返回的對象總是同一個.

打印對象,可以看到兩個指針變量都指向同一地址(對象).



3*設置appIcon提醒數字,必須註冊用戶通知

當我們不知道如何使用某個對象的時候,我們應該進入這個類的頭文件中查看該類具有的屬性以及方法,

進入UIApplication,可以看到設置應用圖標提醒數的屬性

//set to 0 to hide. default is 0. In iOS 8.0and later, your application must register for user notifications using-[UIApplication registerUserNotificationSettings:] before being able to set theicon badge.

@property(nonatomic)NSIntegerapplicationIconBadgeNumber

//根據這個屬性的說明可知,applicationIconBadgeNumber =0的時候默認隱藏,iOS8.0開始,必須註冊用戶通知才能設置應用圖標提醒數字,否則是無法設置的

當只有app.applicationIconBadgeNumber = 10;這一行代碼時,模擬器顯示效果如圖,雖然設置數字爲10,依然無法顯示


當我們註冊之後,如下圖所示註冊方法


運行到模擬器中顯示的效果爲首先彈出選擇框,由用戶決定是否允許提醒,如果用戶選擇不允許,就不出出現提醒數字,當用戶選擇提醒,在以後使用軟件的過程中就可以收到提醒:




4*設置聯網狀態

 // showingnetwork spinning gear in status bar. default is NO

@property(nonatomic,getter=isNetworkActivityIndicatorVisible)BOOLnetworkActivityIndicatorVisible;

由此可知,聯網狀態的顯示在狀態欄,而且默認是NO,即不顯示.如果需要顯示把屬性值改爲YES!

//設置聯網狀態

app.networkActivityIndicatorVisible = YES; 顯示效果如圖


5*設置狀態欄的顯示與隱藏

//Setting statusBarHidden does nothing if your application is using the defaultUIViewController-based status bar system.

如果使用的是默認的基於status bar系統的UIViewController,設置statusBarHidden是沒有任何作用的

@property(nonatomic,getter=isStatusBarHidden)BOOLstatusBarHidden;

iOS7之前,狀態欄由UIApplication對象控制,iOS7之後狀態欄由控制器決定

iOS之前


iOS7之後


儘管現在狀態欄默認由控制器管理,但是以後在一個項目中有很多個控制器,在每個控制器都需要設置狀態欄的隱藏是非常麻煩的,所以最好還是通過UIApplication對象管理,如果想讓UIApplication對象管理狀態欄的顯示與隱藏,需要對配置文件做一些設置,設置如下



經過上面的設置,就可以採用iOS7之前的做法了,狀態欄不再顯示




6*通過UIApplication控制網頁


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章