從開發者的角度審視iOS 6與iPhone 5
譯文
教程說明
學習時間: 30 分鐘
全新的顯示效果
【2012年9月27日 51CTO外電頭條】在接觸iPhone 5之初,我想大家最先注意到的可能就是其屏幕尺寸的改動——沒錯,蘋果終于對經典設計做出變更,對視網膜屏加以擴展。iPhone 4所使用的是3.5英寸(指對角線長度)640 x 960像素的分辨率方案,而iPhone 5則擁有分辨率為640 x 1136像素的4寸屏幕。
作為用戶,我們可能會對iPhone 5的新外形贊嘆不已;然而從開發人員的角度來看,這種外形變更其實非常麻煩——大家肯定一眼就看出,我們必須要讓自己的應用支持額外的顯示尺寸。不過雖然新分辨率方案會加重開發者的工作負擔,但好消息在于iOS 6中的SDK擁有一套全新的自動布局系統,能夠幫助開發者更輕松地應對不同機型之間屏幕尺寸上的差異。
以下圖表將用數據告訴大家iPhone 5在顯示機制方面與其它iOS設備間的區別:
設備名稱 |
屏幕尺寸 |
分辨率 |
PPI(每英寸像素數量) |
高寬比 |
iPhone |
3.5英寸 |
320 x 480像素 |
163 PPI |
3:2 |
iPhone 3G |
3.5英寸 |
320 x 480像素 |
163 PPI |
3:2 |
iPhone 3GS |
3.5英寸 |
320 x 480像素 |
163 PPI |
3:2 |
iPhone 4 |
3.5英寸 |
640 x 960像素 |
326 PPI |
3:2 |
iPhone 4S |
3.5英寸 |
640 x 960像素 |
326 PPI |
3:2 |
iPhone 5 |
4英寸 |
640 x 1136像素 |
326 PPI |
16:9 |
iPad |
9.7英寸 |
768 x 1024像素 |
132 PPI |
4:3 |
iPad (2代) |
9.7英寸 |
768 x 1024像素 |
132 PPI |
4:3 |
iPad (3代) |
9.7英寸 |
1536 x 2048像素 |
264 PPI |
4:3 |
幸運的是,我們不必完全依賴個人的力量來處理這些復雜的屏幕差異。就在去年,蘋果公司為Cocoa開發工具提供了自動布局系統,而如今隨著iOS 6的面世該系統也已經能與Cocoa – Touch完美協作。盡管在iOS 6大張旗鼓的新功能宣傳中我們并沒有看到該系統的身影,但自動布局系統無疑是一項強大的功能性提升,使得開發人員能夠以智能、流暢的方式迅速創建出美觀的應用程序布局。與傳統的硬性編碼布局不同,自動布局方案絕不會讓開發者將各個界面對象強行放在特定的X , Y坐標處;恰恰相反,自動布局會引導開發人員通過數學上的術語來描述各個對象之間的關系,其它具體的排布工作以及對象位置調整則由iOS自動完成。在今年6月召開的WWDC大會上,蘋果公司則著力介紹過這一功能,有興趣的朋友可以再溫習一下有關自動布局系統的宣傳視頻。
如果大家已經在蘋果的App Store中發布過iPhone應用程序,那么首先要做的就是讓這款應用趕快適應iPhone 5的全新屏幕尺寸。因為如果不這么做,我們的應用程序在默認情況下仍然會以原始尺寸及比例顯示在iPhone 5的屏幕上,這時頂部和底部會自動以黑邊的形式顯示——這可不好,雖然對功能性沒有影響,但會讓用戶產生“這款應用非常低端”的感覺。下面幾幅圖就展示了iPhone 5屏幕上、下方存在黑框時的樣子:
在以上截圖中,Fandango應用能夠支持iPhone 5全屏顯示,而星巴克與Pandora應用則存在邊緣黑框現象。
“開發人員必須對現有應用進行更新,才能使其填滿iPhone 5的屏幕。”
大多數iOS應用都是使用UIKit組件創建并且擁有自動調整尺寸特性,這就使得現有應用程序適應iPhone 5變得非常簡單——只要將4英寸方案下的新界面圖像添加到項目當中即可。
更高、更快、更強:新一代A6芯片
很多人都忽略了這一點,但這里我要提醒大家,蘋果在iPhone 5中內置的新一代A6芯片比前代產品的處理速度提高了一倍。作為開發人員,應用程序的實際表現無疑要受到手機硬件的限制。而有了A6芯片的性能支持,我們能夠創建出更為復雜的應用程序,包括更先進的增強現實應用以及更逼真的3D游戲。更值得一提的是,雖然硬件性能得到大幅強化,但iPhone 5的電池續航能力也獲得了一定提升!這簡直是在用行動告訴開發者:丟掉顧慮,放手干吧。
以下圖表顯示了最新的三代iPhone所搭載的芯片系統(簡稱SoC)參數
機型 |
SoC |
最大時鐘速率 |
CPU 核心數 |
GPU 核心數 |
一級緩存 |
二級緩存 |
iPhone 4 |
蘋果A4 |
1 GHz |
1 |
1 |
32/32 kB |
512 kB |
iPhone 4S |
蘋果A5 |
800 MHz to 1 GHz |
2 |
2 |
32/32 kB |
1024 kB |
iPhone 5 |
蘋果A6 |
1.25 GHz |
2 |
3 |
32/32 kB |
1024 kB |
#p#
新的Cocoa-Touch框架
iOS 6 SDK中增加了四大全新框架。
Pass Kit框架
Passbook應用一直是iOS 6系統中關注度最高的功能。在它的幫助下,用戶能夠在自己的設備上購買并存儲以下四種特殊文件:
- 登機牌
- 賽事門票
- 零售優惠券
- 代金券
根據蘋果在官方說明文檔中的描述,Passbook類應用能夠被拆分為以下三個部分:
- 創建Passbook類應用必需的軟件包格式。
- 專門用于Passbook類應用更新及服務器實施的網絡服務API。
- 用于與用戶Passbook記錄互動的Objective-C API。
正如大家所見,將Passbook機制納入到自己的應用程序中來需要涉及到橫跨多層的技術整合工作。Pass Kit的主要作用在于第三條——提供與用戶Passbook記錄互動所必要的Objective-C API。
盡管Passbook在學習及掌握方面需要花費一定時間與精力,但在大家度過了最初的艱難時期后,接下來的學習曲線就會變得暢通無阻了。而且截至本文撰寫之時(12年9月23號),蘋果App Store中只擁有12款支持Passbook功能的應用程序——也就是說,誰能夠及時做出反應、率先在應用程序中引入Passbook,誰就可以占得先機、讓自己的產品在應用的海洋中脫穎而出。
要想了解更多關于Passbook的信息,大家訪問以下網址,看看蘋果公司官方是怎么說的。
網址:https://developer.apple.com/passbook/Getting_Started_with_Passbook.pdf
社交框架
在iOS 5發布之初,蘋果公司就已經幫助開發人員充分簡化了應用與社交網絡的交互——在Twitter框架的幫助下,開發者能夠輕松為自己的應用添加Twitter支持。而在最新的iOS 6中,社交框架的加入令社交網絡整合工作擁有了新方案。整套思路與開源項目ShareKit非常相似,菜單中包含了多個共享選項,用戶可以根據自己的喜好從其中隨意選擇要分享的社交平臺。但除此之外,真正讓社交框架站在時代巔峰上的是其所整合的賬戶框架。在賬戶框架的支持下,用戶能夠以單點登錄(簡稱SSO)的方式以一套口令搞定所有社交平臺,這就免去了一遍遍重復輸入驗證信息的尷尬與繁瑣。
雖然我對于社交框架的出現感到極為興奮,但目前我還是會選擇SahreKit 2.0作為首選方案,畢竟它更成熟也更實用。不過話說回來,再過一、兩年,社交框架在蘋果公司的大力支持下必然獲得飛速發展,我懷疑到時候它會成為新時代的標準、將一切現有同類方案踩在腳下。
廣告支持與媒體工具箱框架
接下來我要向大家介紹另外兩款同樣受到忽視的新框架——廣告支持框架與媒體工具箱框架。廣告支持框架很可能在第三方廣告合作伙伴中成為行業標準,因為它允許開發人員根據自己應用程序的特點提交獨特的、能夠歸納用戶群體類別的廣告位信息。該框架同時提供一套追蹤開關,開發人員需要在應用運行過程中查詢開關啟用與否,并以此來保證用戶廣告投放工作的順利實施。
媒體工具箱框架則沒有太多可談的,它的作用是為AVFoundation框架提供音頻支持,具體內容大家仍然可以溫習WWDC 2012大會中的相關段落。#p#
Cocoa-Touch的改進與修正
正如此前所有新系統發布時的情況一樣,iOS 6的面世也帶了諸多新變化、新功能并棄用了某些陳舊機制。其中某些變化會給移動開發工作帶來深遠影響,這一點在前面的內容中也已經提到了一些。
UITableView增強
UITableView的工作方式也迎來了大幅度轉變。首先,UITableViewCell中的方法dequeueResusableCellWithIdentifier如今被替換為兩種新的UITableView方法,即dequeueReusableCellWithIdentifier:forIndexPath: 與registerClass:forCellReuseIdentifier:。如此一來,在表格視圖中創建并添加UITableViewCell對象會變得更為精簡而流暢。
另外,一種全新的名為UITableViewHeaderFooterView的類也被添加進來,作用是讓開發人員能夠更輕松地創建自定義UITableView頁眉及頁腳。該類的contentView與backgroundView屬性使得能夠自定義的范疇非常廣泛,同時textLabel與detailTextLabel也以快捷方式的形式簡化了我們創建自定義頁眉或頁腳的過程。
表格視圖中的另一大顯著增強就是UIRefreshControl,這種控制機制使得開發人員能夠隨意為自己的表格視圖添加拖動刷新功能。
新的UIKit主題選項
iOS 5在發布時針對最流行的UIKit控件推出了一系列新的自定義機制,而iOS 6也秉承了這種趨勢,并進一步提供了更多可選的界面定制方案。舉例來說,UIPopoverBackgroundView、UIStepper、UISwitch、UINavigationBar、UITabBar、UIToolBar、UIBarButtonItem以及UIPageControl都獲得了與用戶界面控制相關的額外方法或屬性。
正如我們在上文中所提到,UITableView對象在自定義頁眉/頁腳視圖類的幫助下變得更容易修改并制作成主題元素。表格視圖也獲得了與主題相關的兩種全新界面屬性:sectionIndexColor與sectionIndexTrackingBackgroundColor。這些屬性允許開發人員對表格視圖索引的外觀進行更進一步的控制及設定。
UICollectionView打造基于網格的布局方案
UICollectionView類為我們帶來了利用iOS SDK直接創建基于網格的布局的能力。其作用明顯、意義重大,尤其是對于iPad這樣行、列視覺元素使用頻繁的顯示機制來講,這一提升更是極為貼心。
iPad版本的Kindle and Reeder應用程序就是一個極好的例子,在UICollectionView的幫助下,基于網格的布局方案必然能帶來更理想的顯示效果。
盡管上圖中的應用并沒有用到UICollectionView,但它仍然代表了一類常見的布局控制需求。相信在新機制的支持下,開發人員將能夠更輕松地創建出美觀簡潔的視覺界面。
利用NSAttributedString調整文本風格
任何一位與iOS SDK打過一段時間交道的開發者可能都曾經對UILabel以及NSString的功能性局限頗有微辭,同時也費過不少力氣處理其糟糕的外觀效果。在眾多效果調整工作中,最令人煩躁的內容無疑包括粗體文本、超鏈接下劃線、最討人厭的子字符串斜體等等,而且大部分問題都源自UILabel實例或者UIWebView中HTML與CSS的影響。iOS 6引入了NSAttributedString與NSMutableAttributedString,這就使得上述工作得到極大簡化。這兩大新類與NSString相比擁有大量格式設定選項,舉例來說,我們可以在NSAttributedString中對下劃線、背景顏色、刪除線等元素進行分別設置。在創建一套新的屬性化字符串后,我們還可以將其設定套用到任何支持類屬性設置的字符串上,包括UILabel、UIButton以及 UITableViewCell。
視圖自動旋轉
在視圖的自動旋轉功能方面,iOS 6 SDK采取了全新的解決方案。我們長久以來習慣使用的shouldAutorotateToInterfaceOrientation類已經遭到棄用,在新模式下我們將使用supportedInterfaceOrientationsForWindow:與幾種shouldAutorotate方法的新組合。
除此之外,被設定為只能橫向顯示的應用程序一旦調用縱向視圖控制器(例如游戲中心登錄界面所使用的UIPickerViewController),會導致應用本身崩潰。
“在強制橫向顯示的應用程序中調用縱向視圖控制器,會導致應用本身崩潰。”
如果大家對這個話題感興趣,可以查看iOS 6發布說明中的UIKit相關內容。WWDC 2012大會中也有專門的段落展開討論,主題為“Polishing Your Interface Rotations(精心雕琢您的界面旋轉機制)”。#p#
移動版Safari瀏覽器的新功能
正如大家所預期的,移動版Safari瀏覽器在對HTML 5的兼容性及相關功能支持方面又邁出了實質性的一步。雖然我們無法在本文中所這款全新瀏覽器進行細致評述,但以下幾項亮點是大家絕不能錯過的:
- 通過媒體捕捉API及文件API訪問相機功能
- 本地緩存從原來的5MB增加到25MB
- 添加了新的網絡音頻API
- 擁有額外的CSS3支持(包括淡入淡出效果及過濾器等)
- 內置不同的分辨率方案支持能力
- 能夠簡化調試工作的遠程網絡檢測工具
- 對WebKit JavaScript引擎做出性能增強
在上述內容之外,還有一個主要問題值得我們關注。如果在任何應用程序中插入一條含有YouTube內容的UIWebView屬性,這段代碼將無法正常工作。蘋果在iOS 6中拋棄了YouTube應用,因此與之相關的默認網頁視圖回放功能自然也將不復存在。由于很多開發人員與應用程序都依賴于這一功能,因為我個人猜測這次變動會引發不少嚴重問題。另外,我也承認自己對于YouTube的離去感到非常失望。
“在UIWebView中插入的YouTube視頻將無法正常播放。”
大家還想了解更多?Max Firtman撰寫了專門的文章開展全面討論,我們也將在未來的系列指南中帶給大家更多的新鮮意見。
這一點同樣沒有受到大力宣傳,但應用程序開發人員應該了解,iOS 6中的App Store用戶界面已經得到了翻天覆地的變化。想要搜索新游戲?下圖是我們在使用iOS 5系統的iPhone 4S與使用iOS 6系統的iPhone 5中輸入關鍵詞“RPG”后得到的結果畫面:
可以看到,在舊版界面中,我們能夠直接看到五款不同名稱的游戲應用,而且只要輕輕一點,就能看到當前人氣最高的前25大熱門游戲。而在新界面中,屏幕中將會顯示一款應用,用戶必須不斷翻動屏幕才能看到每一款應用程序的詳細信息。
對于這種設定,大家的意見當然可以見仁見智。但就個人而言,我認為這種新設定的目的是“讓用戶在查閱時不會再接觸到過多應用程序。”由于現在我們只能一個接一個瀏覽,因此耗時會變得比較長,用戶也更容易失去耐心。蘋果公司相當于將一紙通告拍在開發人員臉上,告訴他們“把應用程序做好點,否則根本不會有人來鳥你!”好吧,現在全世界的開發者都要爭奪首頁這一珍貴資源了。
“新的App Store UI強調的是第一印象,開發人員一定得做好!”
雖然我個人對于新版App Store的整體使用體驗及界面設置有點失望,但其中仍然蘊含著有可能協助開發人員的新特性。由于社交框架的引入,現在用戶能夠“共享”任何在軟件商店中找到的應用程序產品了:
我敢肯定,大多數開發人員會第一時間在自己的應用程序中添加“共享”選項,但也有不少獨立開發者可能還不知道這一消息。希望借這篇文章能夠為大家開拓思路,利用好這塊全新的宣傳陣地。#p#
在哪里了解更多
iOS 6這次帶來的變化實在是太多了,我根本不可能在一篇文章甚至一套系列教程中將其通通列舉出來。本文只是從開發者的角度簡單對iOS 6及iPhone 5進行了番審視,我們未來還會推出更多針對新系統及新機型的開發指南。請大家放心,我們會從頭開始一步步指導大家如何讓自己的iOS 5應用程序順利安裝并運行在iOS 6系統平臺下,所以請各位保持關注,謝謝!
除此之外,獲得iOS 6權威消息的最佳途徑當然是WWDC 2012大會了,優酷網上有在線視頻,大家一搜即得。官方說明文檔當然也不可或缺,這里我為大家整理了iOS 6說明文檔、iOS 6 新功能一覽以及官方的iOS 6發布說明。
還有一件事……如果大家還沒看蘋果公司的iPhone 5宣傳片,那別猶豫了,趕緊點開以下鏈接瞻仰一番吧:
http://v.youku.com/v_show/id_XNDQ5NzgzOTky.html
總結
大家有計劃在強大的iPhone 5上開發應用程序嗎?請在評論欄中留下您的意見,并與其他讀者朋友交流自己的心得與體會。
原文鏈接:http://mobile.tutsplus.com/articles/news/ios6-iphone5-whats-new/
原文標題:A Developer Looks at iOS 6 and the iPhone 5