Asset catalogs (圖片結構)
- 在XCode5,因為要支援在不同設備使用不同解析度的圖片,我們可能有很多種不同版本且不同檔名的圖片。這時便可以使用Xcode5的新功能Asset catalogs,它會提供一個介面,讓我們可以將一組圖片設定為一個群組,以及要使用的裝置對象。
如下圖
然後在程式裡使用UIImage *myImage = [UIImage imageNamed:@"blueBG"];
來使用圖檔。
- 這個功能最大的好處就是,圖片不再需要強制要用名稱來代表針對的裝置,如@2x, ~iphone,~ipad或-568h,而可以由使用者來定義那些圖是針對那種裝置的。
- 假使將發佈目標設定為IOS7,Xcode會將asset catalogs編成二進位檔案,這將可以讓APP的下載時間縮短。
Image slicing
- 現在XCode新增對圖片的”九宮格縮放”設定,這是為了讓同一張圖片可以針對不同的裝置、不同解析度的狀況下做縮放,而不致讓圖片變型。
下圖是選擇Stretches和Tiles的差異,可以看出,是中間的圖片的拉長方式有所差異。
- 這個功能可以使圖片可以輕易縮放至任意大小,只需設定center mode以及把素材使用至專案裡就好。
Auto Layout improvements
- 在iOS7的autoLayout有很大的改變,幾乎所有的設定都可以在storybaord上面來做。差異點大置有:
- Interface Builder不再會在移動物件後,自動改變constraints,但可以選擇是使用原本設定或是接受新的條件
- 可以輕易的設定兩個UIView之間的constraints(按control+拖曳)
- There are new controls to solve common Auto Layout problems, such as the Pin
and Resolve Auto layout Issues buttons in interface builder, which let you
clear constraints, reset to the suggested constraints in Interface Builder, add
missing constraints, updates constraints, update frames, and more - 有更直觀的設定constraints介面
Preview window
XCode5可以預覽APP在ios6及ios7的顯示差異,首先點Assistant Editor(右上方)
然後點下圖紅圈處
Language improvements
- @import允許只單一import一個類別,如:
#import "ViewController.h" #import "MyScene.h" @import AddressBookUI.ABNewPersonViewController; @implementation ViewController - (void)viewDidLoad { }
- instancetype:和id相同功能,但只能用在傳回的參數上。它代表著是自己的類別或自己的子類別,當若是在alloc init時,沒有傳回自己類別或自己的子函數類別時,編譯器會提示錯誤。如:
@interface Car : NSObject +(instancetype) car; @end
此時若
NSString * car = [Car car];
會出現Incompatiable pointer types initializing 'NSString *' with an expression of type 'Car *'的警告訊息
Documentation improvements
- 右邊頁籤有quick help(點option+alt也可以跳窗方試顯示help)
- 可在自定函數上面使用//增加註解,或用/*! — */增加更詳細的註解,如:
/*! 函數說明 * \param 第一個參數 * \param 第二個參數 * \returns 返回值 */
Debugging improvements
- Data Tips: 下中斷點時,游標移到變數上,可以看到此時變數的值。
- Quick Look:讓變數的內容以圖形化的方式呈現,例如
- 在Debug介面裡新増了CPU和memory的使用量。也可以自己增加要監控的屬性,如用電量、iCloud 活躍度、OpenGL使用的frame rates。
- 點選Product > Perform Action > Analyze file name可分析單一檔案的效能