標籤:hot 世界 對象 handler 碰撞 角度 xcode5 delegate ase
春風又綠加州岸。物是人非又一年。WWDC 2013 keynote落下帷幕,新的iOS開發旅程也由此開啟。在iOS7介面重大變革的背後,開發人員們須要知道的又有哪些呢。同去年一樣,我會先簡單縱覽地介紹iOS7中我個人覺得開發人員須要著重關注和學習的內容,之後再陸續對自己感興趣章節進行探索。計劃繼承類似WWDC2012的筆記的形式,希望對國內開發人員有所協助。
相關筆記整理例如以下:
UI相關全新UI設計
iOS7最大的變化莫過於UI設計。或許你會說UI設計“這是設計師大大們應該關注的事情,不關開發人員的事。我們僅僅須要替換圖片即可了”。那你就錯了。UI的變化必定帶來使用習慣和方式的轉變,怎樣運用iOS7的UI,怎樣是自己的應用更切合新的系統,都是須要考慮的事情。
另外值得注意的是,使用iOS7 SDK(如今僅僅有Xcode5預覽版提供)打包的應用在iOS7上執行時將會自己主動使用iOS7的新介面,所以原有應用可能須要對新介面進行重大調整。
詳細的iOS7中所使用的UI元素的人際互動介面文檔,能夠從這裡找到(應該是須要開發人員帳號才幹看)。
簡單總結來說。以如今上手體驗看來新的UI變化改進有例如以下幾點:
- 狀態列,導覽列和應用實際展示內容不再界限:系統內建的應用都不再區分狀態列和navigation bar,而是用統一的顏色力求簡潔。
這也算是一種趨勢。
- BarItem的button所有文字化:這點做的相當堅決。所有的導航和工具條button都取消了擬物化,原來的文字(比方“Edit”,“Done”之類)改為了簡單的文字。原來的表徵圖(比方建立或者刪除)也做了簡化。
- 程式開啟增加了動畫:從主介面到表徵圖所在位置的一個放大。同一時候顯示應用的載入介面。
自己實驗了幾個現有的AppStore應用在iOS7上的執行情況:
- Pomodoro Do: 這是我自己開發的應用,執行正常,可是由於不是iOS7 SDK打包,所以在UI上使用了之前系統的,問題是導覽列Tint顏色丟失,導致非常難看,須要儘快更新。
- Facebook:由於使用了圖片自己定義導覽列,而沒有直接使用系統提供的材質,所以沒什麼問題。
- 麵包旅行:直接Crash,無法開啟,原因未知。
這次UI大改能夠說是一次對敏捷開發的檢驗,原來的應用(特別是擬物化用得比較重的應用)儘管也能執行。可是非常多UI自己定義的地方需要更改不說,還easy讓使用者產生一種“來到了還有一個世界”的感覺,同一時候能夠看到也有部分應用無法執行。而對於蘋果的封閉系統和僅僅升不降的特性,開發人員以及其應用必需要儘快適應這個新系統,這對於迭代高速,還在繼續維護的應用來說會是一個機會。
相信誰先能適應新的UI。誰就將在iOS7上佔到先機。
動態UIKit
新增了UIDynamicItem託付,用來為UIView制定動態行為。當然其它不論什麼對象都能通過實現這組介面來定義動態行為。僅僅只是在UIKit中可能應用最多。
所謂動態行為,是指將現實世界的行為或者特性引入到UI中,比方重力等。通過實現UIDynamicItem,UIKit如今支援例如以下行為:
- UIAttachmentBehavior 串連兩個實現了UIDynamicItem的物體(下面簡稱動態物體),一個物體移動時,還有一個尾隨移動
- UICollisionBehavior 指定邊界,使兩個動態物體能夠進行碰撞
- UIGravityBehavior 顧名思義,為動態物體添加重力類比
- UIPushBehavior 為動態物體施加持續的力
- UISnapBehavior 為動態物體指定一個附著點。想象一下類似掛一幅畫在圖釘上的感覺
假設有開發遊戲的童鞋可能會認為這些非常多都是做遊戲時候的需求。一種box2d之類的2D物理引擎的既視感躍然而出。
沒錯的親,動態UI,加上之後要介紹的Sprite Kit,極大的擴充了使用UIKit進行遊戲開發的可能性。另外要注意UIDynamicItem不僅適用於UIKit,不論什麼對象都能夠實現介面來獲得動態物體的一些特性,所以說用來做一些3D的事情也不是沒有可能。假設認為Cocos2D+box2d這種組合使用起來不方便的話。如今動態UIKit+SpriteKit給出了新的選擇。
遊戲方面
iOS7 SDK極大加強了直接使用iOS SDK製作和分發遊戲的體驗,最基本的是引入了專門的遊戲製作架構。
Sprite Kit Framework
這是個人覺得iOS7 SDK最大的亮點,也是最重要的部分,iOS SDK最終有自己的精靈系統了。Sprite Kit Framework使用硬體加速的動畫系統來表現2D和2.5D的遊戲。它提供了製作遊戲所須要的大部分的工具。包含映像渲染,動畫系統。聲音播放以及映像類比的物理引擎。能夠說這個架構是iOS SDK內建了一個較完備的2D遊戲引擎。力圖讓開發人員專註於更高層的實現和內容。
和大多數遊戲引擎一樣,Sprite Kit內的內容都依照情境(Scene)來分開組織,一個情境能夠包含貼圖對象,視頻,形狀。粒子效果甚至是CoreImage濾鏡等等。相對於現有的2D引擎來說,因為Sprite Kit是在系統層級進行的最佳化。渲染時間等都由架構決定,因此應該會有比較高的效率。
另外。Xcode還提供了建立粒子系統和貼圖Atlas的工具。
使用Xcode來管理粒子效果和貼圖atlas,能夠迅速在Sprite Kit中反應出來。
Game Controller Framework
為Made-for-iPhone/iPod/iPad (MFi) game controller設計的硬體的相應的架構,能夠讓使用者用來串連和控制專門的遊戲硬體。參考WWDC 2013開場視頻中開始的賽車示範。如今想到的是,或許這貨不僅能夠用於遊戲…或者蘋果之後會擴充其應用。由於使用普及率非常高的iPhone作為物聯網的入口,似乎會是非常有前途的事情。
GameCenter改進
GameCenter一直是蘋果的敗筆…儘管每年都在改進。可是一直沒看到大的起色。
今年也不例外。都是些小修改。不提也罷。
多任務強化
為後台下載,開發人員必須使用一個新的類NSURLSession,事實上就是在NSURLConnection上加了個幕後處理,使用類似,API十分簡單,不再贅述。
AirDrop
這個是iOS7的重頭新功能,使用者能夠用它來分享照片,文檔,連結,或者其它資料給附近的裝置。可是不須要特別的實現,被整合在了標準的UIActivityViewController裡,並沒有單獨的API提供。
資料的話。能夠通過實現UIActivityItemSource介面後進行發送。大概蘋果也不願意看到超出他們控制的檔案分享功能吧。畢竟這和iOS設計的初衷不一樣。
假設你不使用UIActivityViewController的話。可能是無法在應用裡實裝AirDrop功能了。
地圖
Apple在繼續在地圖應用上的探索。MapKit的改進也乏善可陳。我一直相信地圖類應用的瓶頸一定在於資料,可是對於資料來源的建立並非一年兩年可以完畢的。Google在這一塊憑藉自己的搜尋引擎有著得天獨厚的優勢。蘋果還差的非常遠非常遠。
看看有哪些新東西吧:
- MKMapCamera。能夠將一個MKMapCamera對象加入到地圖上,在指明位置,角度和方向後將呈現3D的樣子…大概能夠想象成一個數字版的Google街景..
- MKDirections 擷取Apple提供的基於方向的路徑。然後能夠用來將路徑繪製在自己的應用中。這可能對一些小的地圖服務提供者產生衝擊,可是還是那句話,地圖是一個資料的世界,在擁有完備資料之前。Apple不是Google的對手。
這個狀況至少會持續好幾年(也有可能是永遠)。
- MKGeodesicPolyline 建立一個隨地球曲率的線。並附加到地圖上。完畢一些視覺效果。
- MKMapSnapshotter 使用其拍攝基於地圖的照片,或許各類簽到類應用會用到
- 改變了overlay物件的渲染方式
Inter-App Audio 應用間的音頻
AudioUnit架構中增加了在同一台裝置不同應用之間發送MIDI指令和傳送音訊能力。比方在一個應用中使用AudioUnit錄音,然後在還有一個應用中開啟以處理等。
在音源應用中聲明一個AURemoteIO執行個體來標為Inter-App可用,在目標應用中使用新的發現介面來發現並擷取音頻。 想法非常好,也算是在應用內共用邁出了一步,只是我對如今使用AudioUnit這種低層級架構的應用數量表示不樂觀。或許今後會有一些為更高層級設計的共用API提供給開發人員使用。畢竟要從AudioUnit開始處理音頻對於大多數開發人員來說並非一件非常easy的事情。
點對點連接 Peer-to-Peer Connectivity
能夠看成是AirDrop不能直接使用的補償。代價是須要自己實現。MultipeerConnectivity架構能夠用來發現和串連附近的裝置,並資料轉送。而這一切並不須要有網路連接。
能夠看到Apple逐漸在檔案分享權限設定方面一步步放開限制,可是當然全部這些都還是被限制在sandbox裡的。
Store Kit Framework
Store Kit在內購方面採用了新的訂單系統,這將能夠實現對訂單的本機驗證。這是一次相應內購破解和有可能驗證失敗導致內購失敗的更新,蘋果希望藉此降低內購的實現流程,降低出錯,同一時候遏制內購破解泛濫。前者可能沒有問題,可是後者的話。由於objc的動態特性。決定了僅僅要有越獄存在,內購破解也是早晚的事情。只是這一點確實方便了沒有能力架設驗證server的小開發人員。這方面來說還是非常好的。
最後
當然另一些其它小修改,包含MessageUI裡加入了附件button,Xcode開始支援模組了等等。完整的iOS7新特性列表能夠在這裡找到(臨時應該也須要開發人員帳號)。
最後一個好訊息是,蘋果放慢了廢棄API的速度,這個版本號碼並沒有特別重要的API被標為Deprecated,Cheers。
- See more at: http://onevcat.com/2013/06/developer-should-know-about-ios7/#sthash.rWMKWACE.dpuf
iOS7 SDK新特性