2013-03-29 31 views
1

我對使用AutoLayout感到困惑。我無法理解何時使用它以及何時不使用。我在Xcode 4.5中開發應用程序,以及在prevoius版本的模擬器(4.3,5.0)等上測試它時,應用程序崩潰與此異常「爲viewcontroller的xib AutoLayout?

Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named NSLayoutConstraint " 

我已經通過谷歌走了,發現這種情況發生時Use AutoLayout在廈門國際銀行進行檢查。

但是,當我取消這個Use Autolayout我沒有得到任何的異常。

但當我在retina4英寸測試應用程序時,我不克從視圖的頂部開始,視圖的內容從中間開始。我的意思是說,設計是不一樣的nonretina和視網膜測試。因此,我保留'Use AutoLayout'checked狀態。

我能做些什麼讓我的兩個條件滿意嗎?我需要使它與模擬器的所有版本兼容...

任何幫助woud是可觀/心存感激......

+0

如果你想iOS6的前使用自動佈局在這種情況下,應用程序會崩潰你不能IOS 6之前使用自動佈局。 –

回答

0

對於iPhone 5的4英寸顯示屏,您需要第三個默認圖像[email protected]。否則,這些視圖將被置信箱。要支持iOS6之前的iOS版本,您需要禁用自動佈局選項,但這意味着必須根據屏幕大小手動在代碼中手動更新視圖,或者正確設置自動識別掩碼。

+0

我已經爲iphone 4 inch添加了[email protected]。請你告訴我在哪裏可以設置正確的自動調整掩碼設置。我是否需要根據屏幕大小編寫每段代碼分隔符。我的意思是我需要分別編寫用於在iphone 4和iphone 5中創建相同文本框的單獨代碼。 – Aaradhya

+0

您只需要更新屏幕大小以及視圖或tableView等大型元素。當然,如果您需要某些特定行爲(如屏幕底部的按鈕),您也必須更新其框架。 –

+0

關於自動調整掩碼:檢查大小檢查器和矩形的紅線(Autoresizing和紅色動畫矩形的例子) –

0

使用Autolayout是Apple給出的一個選項,用於自動設置從iOS 6.0開始的nib文件的佈局。因此,如果您要支持iOS版本低於該版本的操作系統將無法找到它,因此將導致崩潰。

所以它是一個選項,你可以使用,如果你只支持iOS 6.0及更高版本

0

可加載不同XIB的的viewController。對於3.5英寸按照步驟

1. Select your xib, first unchecked auto-layout. 
2. Select View object and in its property window, change size property and set it to Retuina 3.5 full screen. 
3. Make changes in your code to load your XIB's for different devices. 
+0

我開發的iPad和iPhone.In iPhone我已經編寫的代碼,如果它是iPhone 3.5和iPhone 4 BCOZ I在我的應用程序中有一個UITabbar我需要根據iPhone屏幕大小的高度單獨調整它,但加載了與自動佈局相同的xib checked.So現在有兩個xib(一個用於iPhone,一個用於iPad)。可以告訴我應該我現在拿3個xib(iPad,iphone 3.5,iphone 4) – Aaradhya

+0

是的,正好3個xib的 –

+0

嘿,我有一個小小的疑問。如果我取消選擇「使用AutoLayout」用於iphone 4英寸顯示屏,並且在同一個xib中處理彈簧和支柱而不創建新的xib,那麼該怎麼辦?因爲當我在iphone5中取消選中它並測試它的工作時,因爲我製作了所有彈簧和支柱(左,右,底部,頂部)(寬度,高度),並且視圖不從中間開始。它正確對齊。我是否還需要單獨使用xib? – Aaradhya

相關問題