2014-09-24 46 views
8

我正在使用iOS 8.我的筆尖已啓用自動佈局和尺寸類別。我在IB中做了兩個佈局,一個用於任何寬度/任何高度,另一個用於任何寬度/緊湊高度。我已經在IB中測試了不同的方向和設備大小,並且我沒有IB中的約束問題。爲什麼我會在不應爲尺寸類安裝的約束上出現自動佈局錯誤?

現在,當我在手機上運行應用程序。該視圖以正確的方式放置在肖像中。然後我將手機旋轉到風景,然後出現「無法同時滿足約束條件」。錯誤。當我查看衝突約束的列表時,我發現應該已經爲橫向佈局卸載了一個約束。旋轉完成後,橫向佈局顯示正確。

就好像iOS試圖在舊約束卸載之前用新邊界佈局視圖。這是iOS的一個已知問題嗎?是否需要執行一個步驟來正確支持大小類?

+2

我有完全相同的問題!當我旋轉肖像(在模擬器上)時,我得到了一個約束的衝突約束,該約束是* not *爲該大小類安裝的!鬱悶了!我不斷重置約束 - 同樣的錯誤! – wcochran 2015-02-16 19:44:12

回答

0

我仍然認爲這是一個iOS錯誤,但我沒有時間做一個示例項目來重現它。我認爲這種佈局的不尋常之處在於,我有一個圖像視圖,當手機旋轉到橫向時,圖像視圖移動到完全不同的位置。

圖像視圖上的寬度約束對於任何大小類都有不同的常量,但是這是拋出異常。

接下來要做的事情是使用不同的寬度約束。一個是爲了緊湊的高度安裝的,另一個是爲其他所有安裝的。即使應該沒有安裝破解約束,這仍然會引發異常。

最後,我得到的解決方案是有兩個圖像視圖,一個用於常規佈局,另一個用於高度緊湊。一次只安裝一個圖像視圖。這工作沒有例外,看起來完全一樣。

5

我遇到了同樣的問題。非常令人沮喪!起初,我將代碼添加到了willTransitionToTraitCollection:withTransitionCoordinator:以檢測newCollection是否爲不需要約束的大小類。如果是這樣,那麼我設置constraint.active = NO。

它伎倆,但我討厭的代碼。我就是這樣說的:「爲什麼我必須這麼做呢?約束沒有安裝在新的尺寸等級上!」

然後我發現如果我在界面生成器中將違規約束的優先級降低到999,我不再在旋轉時在控制檯中收到約束錯誤。 :-)一切都與這個世界再合適不過了。

+0

我目前也很享受這個問題 - 我想我會給你的優先級技巧一去。但是,你知道這種性質的約束衝突是否會導致崩潰/類似問題,以及蘋果是否會純粹在此基礎上拒絕某個應用? – headbanger 2016-04-07 10:02:04

+1

試過了 - 它工作。你是公爵夫人。有投票權。 – headbanger 2016-04-07 10:04:13

相關問題