基於iOS系統的安全性考慮,其應用的數據存儲是經過沙盒模式進行的,要實現應用之間的數據共享十分困難,功能共享就更加棘手。在iOS8系統中,apple爲咱們提供了一個革命性的功能:擴展。咱們能夠經過擴展來使app間數據甚至功能進行共享。xcode
這個擴展也被叫作 widget。該擴展能夠將今日發生的簡短消息放到消息中心的「今日」視圖裏。這個功能相似於安卓系統中的小控件,只是安卓的能夠直接放在桌面上,更加自由。示例以下:安全
該擴展容許應用向在線服務上傳照片、連接或者其餘文件。在之前版本中,咱們若要實現分享功能,必須進行復雜的操做。app
經過這個功能,能夠實現兩個APP中共享一些內容,例如編輯文字中的圖片,翻譯網頁中的文字。工具
這個類型的擴展能夠容許咱們在ipone相機中拍攝的照片使用其餘圖片編輯軟件進行編輯。佈局
該擴展可讓軟件將文件保存在各類雲存儲服務商。spa
容許用戶使用第三方的鍵盤輸入法。翻譯
擴展是一個獨立的構成,和其有關的兩個概念是宿主APP和主機APP,宿主APP是擴展存放的地方,與擴展能夠實現資源共享,主機APP是擴展運行的程序,例如ToDay擴展有抽屜中的Today應用進行運行。要建立一個ToDay擴展,首先咱們須要建立一個宿主APP:code
新建一個工程:orm
選擇xcode工具欄中的File->new->target圖片
在Application Extension中有上面提到的6中擴展,咱們選擇Today。
這是咱們的項目中會多了一個擴展的文件夾:
這個文件夾中有一個ViewController,咱們能夠在裏面進行佈局,還有一個plist文件,但是配置擴展的一些屬性。
咱們建立一個按鈕:
UIButton * btn = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 100, 30)]; [btn setTitle:@"231" forState:UIControlStateNormal]; [self.view addSubview:btn];
以後咱們運行這個擴展:
xcode會讓咱們選擇運行擴展的主機程序,由於這是一個today類型的擴展,咱們選擇Today:
運行後,在系統的通知抽屜中,就會出現咱們的這個擴展:
一樣,咱們能夠建立tableView,imageView以及其餘複雜的視圖效果,咱們也能夠編寫不少邏輯功能,跳轉APP等。
專一技術,熱愛生活,交流技術,也作朋友。
——琿少 QQ羣:203317592