簡體   English   中英

自動布局和可調整大小的視圖存在問題

[英]Problems with autolayout and resizable views

我對自動版式有疑問。

我有三種不同的觀點(也可以是n種觀點)。 當我將第一個固定在超級視圖的頂部並將另一個緊挨着連接時,一切似乎都很好。 但是,如果我想更改第一個的高度,則其他兩個不會跟隨(它們保持在同一位置)。 我對此感到奇怪的是,如果僅連接兩個視圖,則效果很好。

為了更好地理解我要實現的目標,我使用以下三種簡單的示例解決方案:

http://i.stack.imgur.com/cMwiB.png

因此,當我將綠色視圖的高度設置為0(也可以是任何其他數字)並且僅連接了紅色視圖時,此方法工作正常,紅色將按其應有的方式移動。 藍色的一個未連接,並保持在原來的位置:

這是我將藍色連接為紅色時的屏幕截圖:

我試圖做的是:

  • 將藍色也連接到綠色(不起作用)
  • 僅將藍色連接到綠色(不起作用)
  • “裝箱”:帶有當時帶有視圖的包裝箱(丑陋,難以管理,在所有情況下均不起作用)

我想知道的是:

  • 是什么使這種情況發生? 我可以改變這種行為嗎?
  • 在高度上具有可變長度的最佳實踐是什么(除了UITableView)

提前致謝。

好的,我想您在不久前調查自動版式時就陷入了同樣的陷阱。 解釋起來很棘手,但我會盡力而為。 使用自動布局時,您完全需要完全忘記設置視圖的框架。 我的朋友,這包括更改尺寸和位置。 使用自動布局時,您定義了一些約束,即一些“規則”,視圖在渲染屏幕時會嘗試遵守這些約束,因此規則越具體,視圖行為的隨機性就越小。 我的意思是,如果僅定義視圖之間的間距,則意味着視圖的高度無關緊要,因此在調用重新布局時,某些視圖可能會增大或縮小(也就是說,如果您不't指定尺寸限制。您可能希望始終在每個布局中指定某些視圖的尺寸...)

順便說一句,允許您在手動調用重新布局后通過手動更改元素的框架來違反約束,但是當再次調用re-layout方法時,將強制約束,因此約束的大小和位置意見將改變。 快速提示:強制重新布局方法的一種簡單方法是更改​​方向(模擬器中的command + left / command + right)。

因此,在說完之后,我必須說,您提供的布局完全可以按預期工作,至少對我而言。 更改方向時,始終會遵守您指定的約束。 如果需要,您可以嘗試在viewDidAppear方法中應用一些框架設置,因為在自動布局之后將其稱為(因此,您可以暫時違反這些約束)。 完成此操作后,您的視圖將被破壞,但是一旦更改方向,則應再次遵守約束條件。 確保是那樣。

從這里,我只希望您能好運;)哦,請參考文檔,當我半年前查看時,它為我省了很多命。 https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/Introduction/Introduction.html這似乎很經典,但是它是一個很好的文檔。

編輯 :最后一件事。 我的印象是約束並不是動態設計的。 您只需定義一次,它們就始終存在。 它們的主要目的是確保子視圖在每種屏幕分辨率下都能按預期方式呈現,因此,如果我要創建帶有移動視圖的應用程序,我會將其置於自動布局之外,或者完全避免使用它。 雖然只是個人印象:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM