UIApplication

1 - UIApplication

**1.2UIApplication的作用: **

1.設置應用程序的圖標.
2.設置聯(lián)網(wǎng)的狀態(tài).
3.設置狀態(tài)欄.
4.打電話
5.發(fā)短信
6.應用之間跳轉(zhuǎn).

1.2.1 UIApplication常見屬性

1.2 .2 狀態(tài)欄與UIApplication

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

**1.2.4 .openURL: **

2 - 如何實現(xiàn)openURL

2.1首先, 我們在storyboard中應該這樣設置:

然后拖線(和原來一樣)讓這些控件成為我們控制器的方法: 

** 2.2在這個方法中寫代碼:**

//打開URL
@IBAction func openURL() {
    //1.獲取應用程序?qū)ο?    let app = UIApplication.sharedApplication()
    let url = NSURL(string: "http://www.baidu.com")
    app.openURL(url!)
    
}

//設置狀態(tài)欄
@IBAction func setStateBar() {
    
    //1.獲取應用程序?qū)ο?    let app = UIApplication.sharedApplication()
    //2.設置應用狀態(tài)欄,設置之前, 要在info.plist文件當中設置 View controller-based status bar appearance == NO
    
    //2.1設置狀態(tài)欄樣式.
    app.statusBarStyle = .LightContent
}


//設置應用圖標數(shù)字
@IBAction func setAppIconNum() {
    //注冊用戶通知
    let app = UIApplication.sharedApplication()
    //設置用戶通知類型
    let setting = UIUserNotificationSettings(forTypes: UIUserNotificationType.Badge, categories: nil)
    app.registerUserNotificationSettings(setting)
    
    
    //設置應用圖標數(shù)字
    app.applicationIconBadgeNumber = 10
    
    
}

//設置連網(wǎng)狀態(tài)
@IBAction func setNetState() {
    //1.獲取應用程序?qū)ο?    let app = UIApplication.sharedApplication()
    //2.設置連網(wǎng)狀態(tài)
    app.networkActivityIndicatorVisible = true
}

只要我們點擊了, 我們在storyboard中添加的控件, 它就會做一些相應的類似于打電話 發(fā)短信也是這樣指令

而我們圖片上的打電話 , 發(fā)短信也是同樣的道理

3如何實現(xiàn)類的單例

**3.1什么是單例: **

每一個應用程序都有一個應用程序?qū)ο?UIApplication)
這個對象是程序一啟動的時候就創(chuàng)建的.
而且起起至終之有一個.它是一個單例.

3.2為何實現(xiàn)單例

在我們的實際應用中, 我們不可能只是用系統(tǒng)提供的單例, 有時候, 也是需要我們自己創(chuàng)造單例的

**3.3 如何創(chuàng)立單例 **

首先, 要創(chuàng)建一個類, 這個類具有一個類方法(`shareXXX`)XXX為類名  
其次, 我們需要在alloc方法中判斷我們的這個類是否有值, 如果有,第一步: 將已有的對象賦值給后創(chuàng)建的對象, 第二步: 拋出異常(讓系統(tǒng)崩掉)   
如果沒有, 就直接調(diào)用[super alloc];

**3.3.1具體的代碼樣式: **

import UIKit


class Person: NSObject {

static var per:Person?
// MARK: -初始化方法
override class func initialize() {
  per = Person()
    
}


class func shareInstance()->Person {
    return per!
}


override init() {
    
    if Person.per != nil {
        //創(chuàng)建異常
      let exc =  NSException(name: "NSInternalInconsistencyException", reason: "There can only be one Person instance.", userInfo: nil)
        //拋出異常
        exc.raise()
        
    }
    super.init()
}

}

4 UIApplication 代理

關于我們的UIApplication代理
其實我們在創(chuàng)建一個新的程序的時候, 他就已經(jīng)幫我們給寫好了:  

4.1方法及其調(diào)用的時間:

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?

//  應用程序啟動完畢時調(diào)用
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    
    return true
}

// 應用程序?qū)⒁ソ裹c時調(diào)用
func applicationWillResignActive(application: UIApplication) {
    
}

// 應用程序進入到后臺時調(diào)用
func applicationDidEnterBackground(application: UIApplication) {
    
}
// 應用程序進入前臺時調(diào)用
func applicationWillEnterForeground(application: UIApplication) {
    
}
// 應用程序獲取焦點時調(diào)用
func applicationDidBecomeActive(application: UIApplication) {
    
}

// 應用程序退出時調(diào)用
func applicationWillTerminate(application: UIApplication) {
    
}

// 應用程序收到內(nèi)存警告時調(diào)用
func applicationDidReceiveMemoryWarning(application: UIApplication) {
    
}

}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容