[英]How to fix missing/conflicting Constraints for wAny hAny when using different Size Classes
我想要為所有常規高度垂直排列兩個相等高度的視圖。 但是,對於Compact Heights,我希望水平排列視圖。 如下圖所示:
為此,我在適用於所有內容的wAny-hAny size類中添加了一般約束。 然后我為wAny-hRegular和wAny-hCompact大小類添加了特定的約束。 這適用於wAny-hRegular和wAny-hCompact(以及在模擬器中測試應用程序),但它讓我在wAny-hAny中缺少約束。 如果我在wAny-hAny中添加那些缺少的約束,那么我在wAny-hRegular或wAny-hCompact中得到沖突的約束。 我不知道如何擺脫錯誤。
以下是對我所做的更詳細的解釋。
通過執行以下步驟,我能夠在模擬器中獲得一些功能。
wAny hAny
對於任何寬度任何高度我設置以下4個約束:
也就是說,我將藍色固定在頂部和左側,我將紅色固定在右側和底部。 無論使用何種大小類,都始終需要這些約束。
wHny hRegular
對於任何寬度常規高度,我添加了以下4個約束:
也就是說,我將藍色固定在右側,紅色固定在左側。 我還將紅色的上邊緣固定在藍色的下邊緣。 而我的紅色和藍色相等。 這解決了常規高度的所有約束問題。
wAny hCompact
對於任何寬度緊湊高度我添加了以下4個約束:
也就是說,我將藍色固定在底部,紅色固定在頂部。 我還將紅色的右邊緣固定在藍色的左邊緣。 我做了紅色和藍色相等的寬度。 這解決了Compact Height的所有約束問題。
通過上面的設置,一切都可以在故事板預覽中看到(請參見上面的第一張圖片),並且在我測試的所有尺寸的模擬器中都能正常工作。
但是,在Interface Builder中,我收到了wAny hAny Size Class的以下Missing Constraint錯誤:
這有點像catch-22,因為如果我嘗試添加缺少的約束,那么我會使用Regular或Compact Size Class約束創建沖突的約束。 以Compact為例:
我該如何解決這個問題?
這是因為在兩個不同大小的類中,單個視圖有兩種不同的約束。 因此,在使用不同的大小類時,修復wAny hAny的缺失/沖突約束的問題,嘗試從wAny hAny大小類中卸載附加約束,這些約束是在wAny hCompact或任何其他大小類中添加的。
你可以這樣做:
腳步:
從彈出菜單中選擇大小類后,Constraint檢查器中將顯示該大小類的新條目項。
注意 :如果已存在所需大小類的現有條目項,請跳過此步驟。
仍會創建已卸載約束的運行時對象。 但是,它不包含在視圖層次結構中。
Constraint檢查器顯示一個或多個條目項,顯示是否為大小類安裝了約束。 尺寸類的每個輸入行都以刪除按鈕(x)開頭,后跟尺寸類,然后是選擇復選框。 尺寸類顯示寬度(w)和高度(h)。 C用於緊湊大小類,R用於常規大小類,Any用於任何大小類。
您可以在此Apple文檔中找到有關安裝和卸載大小類約束的詳細說明。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.