所以我創建了這個場景,以便了解視圖根據其內容如何增加高度。但是我仍然無法做到這一點。如何使用自動佈局更改uiview的高度?
這是我現在有:
TextView的是根據內容的增長。但是包含它的uview正在消失。我應該使用什麼約束,以便當uitextview變大時,其父視圖的高度也會增加?
所以我創建了這個場景,以便了解視圖根據其內容如何增加高度。但是我仍然無法做到這一點。如何使用自動佈局更改uiview的高度?
這是我現在有:
TextView的是根據內容的增長。但是包含它的uview正在消失。我應該使用什麼約束,以便當uitextview變大時,其父視圖的高度也會增加?
ON的UITextView讓你您未選擇這些
現在像這樣改變你的自動佈局約束。
在故事板頁面上,單擊您的textview。 然後點擊右下角的小三角形。
先點擊「清除約束」。 然後在「添加缺少約束」。
它是最簡單的方法。
這可能是容易的,但它是遠離明確的,不會永遠做你需要它做的事,比如在這種情況下。 – nhgrif 2014-11-23 13:15:07
我認爲textview的高度是動態的,你無法直接調整評論的高度。 – Priyatham51 2014-11-23 14:04:25
首先清除所有的約束條件,這樣我們就擁有了新鮮的石板。
第1步:構建您的視圖層次結構。在這個例子中,我們想是這樣的:
視圖控制器的觀點,我們稱之爲parentView
有一個子視圖,我們稱之爲redView
。 redView
有一個孩子,一個文本字段,我們將其稱爲textField
。
層次結構看起來像這樣:
步驟2:設置特定於任何單個視圖的任何約束。在這種情況下,我們可能只想在文本視圖上設置寬度約束。現在,我只需設置200pts的寬度。
步驟3:設置textView
和它的父,redView
之間的約束。假設我們想要一個10pt邊框。讓我們添加這些約束:
一旦我們添加了這些限制,我們會得到一些汽車佈局警告和錯誤。對於初學者來說,由於限制,我增加了與和空間的SuperView不符合實際的尺寸,我會得到一些警告這樣的:
也將有描述丟失X些錯誤, Y的職位爲redView
和textView
。這裏的錯誤實際上是必要的兩倍。 textView
知道自己相對於redView
的位置。我們不需要更多的約束來整理textView
的位置。然而,redView
不知道自己的位置,所以最終,textView
也不完全知道。
我們可以更新textView
的框架來擺脫警告,但讓我們繼續並修復實際的錯誤。
第5步:設置redView
相對於superView
的約束。 redView
已經知道尺寸是多少。注意我們沒有錯誤redView
的寬度。它只是不知道該去哪裏。在這種情況下,我會簡單地說我們想要redView
居中。因此,我們將要添加這些約束:
現在我們已經解決的一些問題。唯一的問題是所有東西都是height
。
要解決這個問題,我們必須設置內容大小優先級textView
。將這些全部設置爲1000,並將「內在尺寸」屬性更改爲「佔位符」。
到現在爲止,所有的自動佈局的錯誤應該消失,我們應該只警告留下,因爲我們的故事板幀不匹配,就是我們說的限制,他們應該。
我們可以解決這個問題,通過選擇parentView
和更新所有的幀:
還有一個最後的警告這種自動佈局之謎,當談到基於內容的大小自動調整大小:如果發生了什麼我們文本視圖沒有內容?
如果我們的textview沒有內容,自動佈局會選擇0的高度,我們的用戶甚至無法看到那裏有一個文本視圖,更不用點擊它來添加內容(並使其擴大)。在使用自動佈局和基於內容的大小調整時,我們幾乎總是應該確保已經爲內容視圖設置了明確的或最小的大小。
我們不必擔心我們的textView
的寬度,因爲我們將其明確設置爲200.因此,讓我們添加一個最小高度約束。通過添加任何高度約束開始:
現在去尺寸檢查爲textView
,發現我們加入這個高度約束,並編輯成一個大於或等於約束:
故事板不會反映我們textView
中內容的變化並適當調整它的大小,但您的約束現在已正確設置,並且這將在您的設備或模擬器中正確運行。
我認爲我們還需要在紅色視圖上添加寬度約束。 – Priyatham51 2014-11-23 13:52:45
非常感謝:)現在有道理! – thirdage 2014-11-23 14:09:52
您可以檢查我的其他情況,因爲我無法控制表格的標題視圖:http://stackoverflow.com/questions/27077818/how-to-stop-a-uitextview-from-covering-uitableviewcell – thirdage 2014-11-23 14:18:04