2012年9月16日 星期日

致命的Autolayout

當我們興高采烈地採用最新的Xcode 4.5,搭配最新的iOS 6 SDK,建立新專案開始開發時,一旦在iOS 5的機器上執行,卻馬上crash,死前遺言如下:




從遺言我們得知問題出在NSLayoutConstraint上,這是因為它是在iOS 6才冒出的類別 

NS_CLASS_AVAILABLE_IOS(6_0)
@interface NSLayoutConstraint : NSObject


讓我們回頭看看專案的storyboard,我們可發現在View下多了很多設定排版的Constraint。




切換到storyboard的File Inspector頁面,我們可發現Use Autolayout被勾選。

 
Autolayout是iOS 6才加入的排版機制,利用剛剛畫面上看到的Constraint,排列畫面上的元件。 為了能相容iOS 5以下的版本,我們只要取消此勾選,移除Autolayout,即可解決App crash的問題。







沒有留言:

張貼留言