iOS 版本更新摘要(一)iOS 7.0,ios7.0

來源:互聯網
上載者:User

iOS 版本更新摘要(一)iOS 7.0,ios7.0

 

  從這一篇開始,我會把iOS 7.0 到最新版本的更新摘要都整理出來,時間跨度可能會很久。這是每一個 iOS SDK(Release Version)發布時,同步發布的 “What's New in iOS x.x” 的摘要(說摘要可能更好一點,畢竟我有許多不熟悉的模組,說翻譯要被打腫臉的。。。)。

  做這件事有幾個原因:

  1、讓自己更加明確 iOS 每個版本的改動。這樣的話,我就有很多東西要去學習、完善與修複了;

  2、提升使用者體驗。因為 iOS 8 一定會比 iOS 7 更好用。如果我的 target 是 iOS 7.0 的話,那我也要做 iOS 8 特有的適配,這讓使用者覺得 app 細節到位,UI/UE設計與時俱進;

  3、讓比我懶的人可以快速瞭解更新內容。

 

  下面是我閱讀的摘要,推薦配合官網原文查看。如果發現我曲解的地方,請留言回複,萬分感謝。

iOS7.0 更新摘要 (What's New in iOS 7.0)官網原文:https://developer.apple.com/library/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS7.html#//apple_ref/doc/uid/TP40013162-SW1一、UI改變重做UI    iOS7最直觀的改動是UI。從這個版本開始,UI進入扁平化設計,放棄了擬物化的互動介面。扁平化有諸多優點,最直接的就是簡單粗暴,層層深入直達目的。符合資訊時代,高效的資料採礦思路。頁面(views)支援動態特性 UIDynamic    只要遵守UIDynamicItem 的 protocol 就可以現實view的動態效果。UIKit支援下面這幾種行為:    1、 UIAttachmentBehavior     聯動效果,兩個items的依附    2、 UICollisionBehavior      碰撞效果,對象具有實際體積就可以    3、 UIGravityBehavior        重力效果,字面意思,不過可以設定方向    4、 UIPushBehavior           推動效果,可以是一次性動力,也可以是持續的動力    5、 UISnapBehavior           快速動作,給出一個座標後,快速響應到那裡    UIDynamicAnimator,這是一個動力對象的處理者,它提供處理所需的context。    ps:UIDynamic + CA 各種炫酷效果就出來了。。。Text Kit     這是CoreText的簡化版,圖文混排從此不再複雜。要玩轉它,你要瞭解這幾個類:    1、 NSAttributedString   這是必須要會的,支援各種新增特性。從此文字框可以炫起來。    4、 NSTextStorage        為啥要寫成423呢?因為按照層級,NSTextStorage(NSAttributedString的子類),存放文本,可以對文本進行各類操作    2、 NSLayoutManager      這個Manager用來管理文字內容的排版    3、 NSTextContainer      這是整個放置排版好的文本的容器   二、支援64位    從這個版本開始,iOS SDK內的framework和libraries都相容了32位和64位。配合上重新編譯後的64位runtime,app可以更快,64位的處理器自然會給出更多的資源。iOS會運行在LP64模式下,代碼移植出錯的幾率將會降低。(OS X 和其他的 UNIX 都是運行在LP64下的。在 LP64 模型中,long 和 pointer 類型都以64位為單位進行對齊。)三、多任務加強    新增兩種後台運行(UIBackgroundModes)的任務類型:    1、fetch                 這是用來在後台定期擷取資料的。        在info.plist 裡面勾選它就會生效        setMinimumBackgroundFetchInterval: 這個方法可以設定擷取的頻率        application:performFetchWithCompletionHandler:  這個方法用來擷取並處理資料。    2、remote-notification   遠程喚醒推送。因為可以喚醒app,所以頻率有限制。        在info.plist裡面勾選它並且在aps的payload裡面加上這個欄位content-available就好了。        application:didReceiveRemoteNotification:fetchCompletionHandler: 這個方法用來處理推送資訊*** 除此以外的幾種分別為:    1、audio                 播放音樂                    iOS 4.0+    2、location              後台定位                    iOS 4.0+    3、voip                  VoIP:ipVoice Messaging Service             iOS 4.0+    4、newsstand-content     蘋果自己的NewsStand服務      iOS 5.0+     5、external-accessory    定期向'裝置'傳輸data         iOS 5.0+    6、bluetooth-central     (CoreBluetooth)藍芽互動     iOS 5.0+    7、bluetooth-peripheral  藍芽互動:外設模式互動         iOS 6.0+*** 共7種四、遊戲    iOS7 加強了對遊戲的支援Sprite Kit Framework        為 2D 和 2.5D 提供了一個圖形硬體加速動畫系統。並且提供了大多數遊戲所需的基礎支援:映像渲染、後台音頻播放、還有一個類比物理引擎。更多的介紹可以去看 SpriteKit Programming GuideGame Controller Framework    這個Framework 可以用來串連為iOS裝置製作的MFi裝置,比如遊戲手柄。    Game Center Improvements    遊戲中心的提升。    1、新增Exchanges               遊戲玩家間的社交功能    2、最佳化per-app leaderboards    熱門排行榜由25人,加到100人。如果用了 GKLeaderboardSet 設定的話,上限500    3、最佳化Challenges              增加了設定挑戰約束的功能,如可以限制使用同一個道具完成任務    4、加強prevent cheating        加強了遊戲認證以及防作弊的措施        五、地圖    MapKit.framework 的改動,包括了許多的提升與新特性的加入。旨在讓app能夠擷取更多地圖相關的基本資料。當然3D也開始支援了,並且可以控制視角。Maps Kit還有以下的加強:    1、覆蓋物可以放置在不同的層,也就是你可以自由切換顯示的東西了。    2、可以放一個 MKMapCamera 的執行個體在地圖裡面。它可以設定很多參數:位置,傾斜度,標題資訊,來提供一個3D的視角。    3、這個類 MKDirections 可以讓你從 Apple 獲得方向性的資訊。你可以依據這些資訊設定覆蓋物。      4、這個類 MKGeodesicPolyline 可以讓你依據地表弧度建立一個線性覆蓋物。    5、這個類 MKMapSnapshotter 可以讓你在地圖上。    6、這個類 MKOverlayRenderer 提供了更好,更便捷的渲染方式用呈現可視化的覆蓋物。    7、這兩個類 MKTileOverlay MKTileOverlayRenderer 可以改地圖的網格切片。    六、AirDrop    OS X 10.7(Lion)開始支援 AirDrop,而iOS到iOS7才可以使用。(ps: AirDrop 是通過無線進行檔案傳輸的,不過需要開啟藍芽用於發現裝置。)    AirDrop 在iOS7上僅在這個類 UIActivityViewController 裡面可以配置。這個類展示了各種分享app內容的方案。如果你還沒使用過這個類,你可以考慮在你的app裡面試一下。實現以下兩步你就可以接受 AirDrop 傳輸的檔案了:    1、在 Info.plist 裡面配置這個請求;    2、在app 的delegate中 實現這個 application:openURL:sourceApplication:annotation: 方法,當你接受到檔案時,這個方法會被調用。    你接受到的檔案會被放在 home 目錄下的 Documents/Inbox 裡面。不過如果你想改動這些檔案的話,你要先移動出來再改動。(The system allows your app to read and delete files in this directory only. 也就是說這個目錄只能讀和刪。)這個目錄下的檔案是有加密保護的,所以你要讓你的檔案在鎖定裝置時無法被訪問。七、APP間的音頻     Inter-App Audio:這個功能依賴於 AudioUnit.framework 新增的特性,它使得同一台裝置上的APPs相互發送 MIDI 命令和音頻流。使用這個特性,你可以在當前 app 錄製音頻,然後發送給別的 app 去處理。    想要傳輸資料給別人處理的話,你要發布一個 別的app可以發現的 音頻I/O單元(AURemoteIO)。    想要發現別人分享出來的資料的話,你可以使用 Audio 組件下的發現功能介面。    八、端對端通訊    Peer-to-Peer Connectivity:端對端通訊的 MultipeerConnectivity.framework 支援發現附近的裝置,和直接發起通訊(可以不需要連網)。這個 framework 讓我們可以輕易建立多點會話,並且可以可靠的按序傳輸資料以及即時傳輸資料。依靠它,我們可以和附近的裝置進行無縫的資料轉送。    這個 framework 還提供了相關的介面,讓我們發現和管理附近的裝置與網路。APPs 可以通過整合這個類 MCBrowserViewController 來展示附近的裝置,並且進行選擇。當然,你也可以用這個類 MCNearbyServiceBrowser 通過編程來尋找和管理端裝置。下面是這裡更新的梳理:(帶 * 的建議關注一下)一、新增的Frameworks    1、GameController.framework,主要是給了遊戲外設的支援    2、SpriteKit.framework,提供了基於精靈(sprite)的動畫和映像渲染的API    3、MultipeerConnectivity.framework,提供了端對端裝置互動的API*   4、JavaScriptCore.framework,這個就厲害了,可以直接抓取 webview 運行時的 JS。也就是可以用 js “直接”調用 native 了    5、MediaAccessibility.framework,提供了展示 app 內媒體檔案的隱藏資訊API    6、SafariServices.framework,可以用它把 URL 加入到系統 Safari 的閱讀清單中去二、現有Frameworks的增強UIKit Framework    1、所有的UI都改成了iOS7風格。    2、UIKit Dynamics 可以 mimic(類比)現實世界的動力效果。*   3、Text Kit 提供了更精細的文本編輯和展示功能。    4、UIView 有了以下提升:            可以使用 tintColor            可以設定 keyframe(主要畫面格)動畫和‘出場’動畫    5、UIViewController 有了以下提升:            可以定義 transitions(轉場)            可以控制 status bar(狀態列)樣式和可見度    6、UIMotionEffect 定義了基本的運動視覺效果(其實並不明顯)    7、Collection views,加強了自訂layout的支援。用 Dynamics 還可以給每個 items 加動效*   8、UIImage imageNamed: 這個方法現在支援調用 asset 裡面的資源了,也就是 @1x,@2x(以及@3x)的可以放在一起了*   9、UIView and UIScreen 可以自己進行 snapshots,新的產生方式明顯比渲染頁面進行要來的快    10、基於動力的手勢可以確保,添加一個新的時,舊的已經失效    11、UIKeyCommand 可以響應硬體鍵盤的 evens,這些 events 可以傳給 app 處理    12、UIFontDescriptor 這個執行個體可以儲存字型 attributes 的資訊。這個 UIFontDescriptor 可以與其它平台互動(互連)    13、UIFont and UIFontDescriptor 提供了文字大小的動態支援,這讓 app 的可讀性更好。因為這可以更好的控制字型,所以每個 app 都應該使用    14、UIActivity 支援了許多新特性:使用 Air Drop 傳輸檔案,向 Safari 的閱讀清單加 URLs,向 Flickr, Tencent Weibo, and Vimeo 發送內容*   15、UIApplicationDelegate 添加了後台擷取資料(fetch )的 API    16、UIKit支援了 guided-access 模式下的運行,這個模式可以保護 app 的內容不被修改。就是可以限制他人的使用    17、狀態存貯,現在支援 any object 了。只要你的 object 實現 UIStateRestoring 的協議,你的 object 的狀態就可以在 app 進入後台時寫入,在下次返回前台時保持住狀態    18、Table view 現在支援了 cell 高度和別的參數的預估計,這讓滾動的體驗更好了    19、你現在可以更容易的將 UISearchDisplayController 和 UINavigationBar 協同工作    Store Kit Framework    SK架構 遷入到了一個新的回執系統,也就是你可以自己通過裝置或者伺服器查看 iap 的訂單回執。Pass Kit Framework    PassKit.framework 新增了許多 APIs,包括一次添加多個通行證。新增的特性如下:    1、列舉通行證(pass)的到期時間的新索引值    2、你可以根據附近特殊的 iBeacons,列舉對應的 pass    3、新的特性可以控制每個 pass 的展示。可以配置文本,時間樣式等等    4、你可以給每個 pass 關聯一些額外的資訊。這些資訊可以與你 app 相關,但是使用者不可見    5、你可以自訂 pass 的展示地區內,展示的載體OpenGL ES    iOS7 新增了對 OpenGL ES 3.0 的支援,並且給 OpenGL ES 2.0 添加的很多新特性。    OpenGL ES 3.0 (被加入)    在 iOS 中3.0被作為2.0 帶有許多新特性的核心功能的擴充。但是 3.0 新增了紋理特性相關的API和一個從來沒有在手機上能被使用的核心功能:包括多重轉譯目標(MRT)技術與變換反饋技術。    在裝置上建立一個 3.0 的上下文,傳遞這個常量 kEAGLRenderingAPIOpenGLES3 到 initWithAPI: 方法。    OpenGL ES 2.0 (新增特性)    1、EXT_sRGB 的擴充,增加了對幀緩衝器(frame buffer)的 sRGB 的支援    2、GL_EXT_pvrtc_sRGB 的擴充,增加了對存放在 PVRTC 中的壓縮格式的紋理的sRGB支援(同樣手用與3.0)    3、GL_EXT_draw_instanced 和 GL_EXT_instanced_arrays 的擴充,提升了多個相同 objects 的渲染操作。你可以用單個調用來 draw 出相同的 objects    Textures    2.0 和 3.0都支援了紋理的頂點作色。查詢這個特性 MAX_VERTEX_TEXTURE_IMAGE_UNITS 你可以瞭解到你需要的紋理的參數(數實值型別)。老的版本裡面這個參數一直是 0    Message UI Framework    這個類:MFMessageComposeViewController 新增了簡訊附件的支援。Media Player Framework    這個類:MPVolumeView 提供了用來擷取到使用者選擇了的,無線裝置的 route 資訊(AirPlay 和 藍芽)的功能。而且你還能知道這裡的 route 現在是不是活躍的。    *** 相關變數如下:    有沒有可用的AirPlay以及是否被選中:        areWirelessRoutesAvailable         isWirelessRouteActive    這兩個是變更時的通知:        MPVolumeViewWirelessRoutesAvailableDidChangeNotification        MPVolumeViewWirelessRouteActiveDidChangeNotification*** 、Map Kit Framework        這個的變化,在第五點地圖裡面說了。Image I/O Framework    現在提供了 UI 介面,用來擷取和設定圖片的中繼資料(metadata)。iAd Framework    iAd.framework 為別的 frameworks 新增了兩個擴充,使他們更容易植入廣告。    1、給這個類 MPMoviePlayerController 加了兩個方法,讓你可以在播放視頻前放一段廣告(用播放器的,可以嗶汪冷靜一下,2333333)    2、給我們的 UIViewController 擴充了一下,讓你可以在顯示真實頁面前放一段廣告    Game Kit Framework        這個有很大的變化,見第四點-遊戲中的 - Game Center Improvements。Foundation Framework    Foundation.framework 有以下的增強:    1、NSData 支援了 Base64 encoding    2、NSURLSession 被推出用來替代 NSURLConnection 和 NSURLDownload 以及上述兩個的代理    3、NSURLComponents 這個類 可以用來解析 URL 裡面的相關內容。解析支援的協議標準為  (rfc3986/STD66)    4、NSNetService 和 NSNetServiceBrowser 支援的端對端基於 Wi-Fi 和 Blueteeth 的資料轉送    5、NSURLCredential 和 NSURLCredentialStorage 提供了讓你建立一個同步協議的認證的API,並且也給出了從 iCloud 中使用同步協議移除這個認證的API    6、NSURLCache, NSURLCredentialStorage 和 NSHTTPCookieStorage 現在支援非同步處理請求的儲存    7、NSCalendar 支援新的日曆樣式    8、NSProgress 給出了通用的API,來監視進度和提供進度資料給 app 中需要的地方    Core Telephony Framework    CoreTelephony.framework 讓你獲得裝置上語音通話相關的資訊。app 開發時結合了載體的話,就可以依據載體驗證是不是一個特定使用者。Core Motion Framework    CoreMotion.framework 新增了計步和動作追蹤功能。使用計步功能,這個 framework 可以依據使用者的運動,發現移動資訊,並記錄步數。因為是系統幫你記錄,所以你的 app 沒有運行一樣有資料。同時,這個 framework 可以區分運動的類型,包括各種運動的反饋,步行、跑步或者騎車。導航類的 app 可以使用這個特性獲得的資料,來告訴使用者方位。Core Location Framework    CoreLocation.framework 支援地區監控和藍芽定位。前者讓你知道你(的裝置)到了一個特殊地區,後者讓你知道與附近的藍牙裝置的相對位置。舉個例子:一個藝術博物館可以通過地區監控知道參觀者在哪一個畫廊,然後設定相應的 iBeacons 在附近的作品上。然後 參觀者走進站在作品前面時,作品資訊就出現在他的手機上。        這個 framework 還提供了設定定位間隔和定位精度的方法。Core Foundation Framework    CoreFoundation.framework現在允許你安排線程隊列中的流對象。Core Bluetooth Framework    CoreBluetooth.framework 包括以下增強:    1、這個 framework 支援儲存中央和周圍的對象的狀態,並且在 app 啟動的時候載入回來。使用這個特性,可以支援與藍芽相關裝置的長期互動    2、中央和周圍的類對象,現在統一用 NSUUID 來設定儲存唯一識別碼    3、你現在可以通過內部管理對象,同步恢複外部對象    AV Foundation Framework    AVFoundation.framework 有了以下加強:    1、AVAudioSession 支援了下面的新特性:        - 選擇喜好的音頻輸入,包括內建的麥克風        - 多聲道的輸入輸出    2、AVVideoCompositing 協議和相關類,讓你可以自訂視頻的合成排版    3、AVSpeechSynthesizer 及其相關類,讓你可以進行語音合成    4、攝像功能有了改動:        - 掃描功能的格式和幀速度        - 高速(高fps)攝像        - 靜態拍攝的穩定性        - video 的畫面大小        - 即時掃描支援機器可讀資料來源(二維碼的識別)        - 自動對焦的限制        - 攝像時平滑的自動對焦        - 拍攝時共用app的音頻(拍攝時可以加BGM)        - 接入時鐘        - 調用網路攝影機和麥克風需要使用者授權        - 給出資料輸出和 AVAssetWriter 的推薦設定    5、新的中繼資料 keys 支援 ISO 標準的格式,如 MPEG-4 和 3GPP。並且提升了轉換中繼資料對象到輸出檔案時的過濾能力(使用 AVAssetExportSession)    6、AVAssetWriter 提供了格式化輸出的配置,並且是最新的 H.264 標準    7、AVPlayerLayer 新增了 videoRect 屬性,這個屬性可以用來擷取視頻圖片的大小和位置    8、AVPlayerItem 有了以下改變:        - 當 AVPlayerItem 對象在後台就緒時,Asset裡面的屬性成員可以自動載入到裡面了        - 當你的 app 接入 iOS 7 SDK時,許多參數都會有預設的傳回值了,這和之前的 SDK 版本都不一樣。也即是 AVPlayerItem 不會 block 住你的 app 了。當你的播放對象狀態轉為 AVPlayerItemStatusReadyToPlay 時,getter 會映射到媒體資源實際的數值。如果你用了 KVO,他會收到這些屬性改變的通知的    9、AVPlayerItemLegibleOutput 可以處理媒體檔案的字幕    10、AVAssetResourceLoaderDelegate 協議現在支援從媒體檔案中載入任意段落資料    Accelerate Framework    Accelerate.framework 包括以下加強:    1、可以操縱 Core Graphics 的資料類型    2、支援1、2、4 ppi 的灰階映像    3、為圖片間的格式轉化以及內容轉化,定義了新的規則    4、支援雙二階濾波器(IIR數字濾波器)操作三、Objective-C    OC 現在支援了模組化,這使得編譯和項目索引更快速。Xcode 5 支援所有項目的模組化,已經存在的項目,你要去修改它的可模組化配置,已保證它可以支援。四、棄用的API (這裡的都比較關鍵)    有時,Apple 會給一些 API 加上棄用的宏,用來說明這些 API 以後將不在開發中使用了。當然,這個宏,並不代表這些 API 會立刻失效,而是我們會有更好的選擇來替換這些 API。因為某些曆史因素和很多已經發布的程式,這些棄用的 API 依舊是有效。不過,新的 app 建議使用新的 API,因為新的 API 變化不大,只是修複高危 bugs 和增加安全補丁而已。棄用的 APIs,會在將來的作業系統中被徹底移出。    作為一個開發人員,盡量避免在你的 code 中使用棄用 APIs 是非常重要的。 至少,你新的 code 絕不應該用棄用的 API,已經寫好的 code 就去 update 一下。所幸,Xcode 的編譯器會在你使用到棄用 API 的地方,給你一個警告,而你可以按照這個警告的提示來更新代碼。    這一個發布版的棄用 APIs,包括一下幾個技術地區:    1、Map Kit framework 中使用了 MKOverlayRenderer 類來代替原有的 MKOverlayView 和它的子類    2、Audio Session API 中 AudioToolbox.framework 被 AVFoundation.framework 中的 AVAudioSession 類所替換    3、Core Location framework 中的 CLRegion 類被 CLCircularRegion 替換了。但是這個類被當做抽象基類,用來支援地理資訊(geo)和 信標地區(beacon region)*   4、CBCentral 類中的 UUID 被棄用了。裝置的唯一標識,可以使用裝置的 identifier 屬性    5、Game Kit framework 包含了給種各樣的描述,意在清空已有的 API,對新特性提供更好的支援     6、UIKit.framework 有以下動作:        - UIViewController 的 wantsFullScreenLayout 屬性被棄用,從iOS 7 開始這個屬性預設支援        - UIColor 對象不再像早期 iOS 版本一樣;現在不支援背景材質了        - 許多 NSString 類的 draw 選項都被棄用了,因為出了新的變體方法    7、libsyscall 庫中的 gethostuuid 方法被棄用了*   8、從iOS 7 開始,如果你嘗試獲得裝置的 MAC 位址的話,會永遠返回 02:00:00:00:00:00 。如果你需要使用唯一識別碼,你可以用 UIDevice 的 identifierForVendor 屬性;如果你需要做廣告的話,必須使用 ASIdentifierManager 的 advertisingIdentifier 屬性。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.