2014-11-23 108 views
5

所以我創建了這個場景,以便了解視圖根據其內容如何增加高度。但是我仍然無法做到這一點。如何使用自動佈局更改uiview的高度?

這是我現在有:

enter image description here

TextView的是根據內容的增長。但是包含它的uview正在消失。我應該使用什麼約束,以便當uitextview變大時,其父視圖的高度也會增加?

回答

1

ON的UITextView讓你您未選擇這些

  • 滾動啓用
  • 跳動
  • 反彈平鋪
  • 反彈垂直
  • 顯示水平指示器
  • 顯示垂直指示器

現在像這樣改變你的自動佈局約束。

enter image description here

Constraints for parent view

+0

非常感謝:)現在有道理! – thirdage 2014-11-23 14:09:52

+0

您可以檢查我的其他情況,因爲我無法控制表格的標題視圖:http://stackoverflow.com/questions/27077818/how-to-stop-a-uitextview-from-covering-uitableviewcell – thirdage 2014-11-23 14:18:04

-2

在故事板頁面上,單擊您的textview。 然後點擊右下角的小三角形。

先點擊「清除約束」。 然後在「添加缺少約束」。

它是最簡單的方法。

+0

這可能是容易的,但它是遠離明確的,不會永遠做你需要它做的事,比如在這種情況下。 – nhgrif 2014-11-23 13:15:07

+0

我認爲textview的高度是動態的,你無法直接調整評論的高度。 – Priyatham51 2014-11-23 14:04:25

10

首先清除所有的約束條件,這樣我們就擁有了新鮮的石板。

第1步:構建您的視圖層次結構。在這個例子中,我們想是這樣的:

enter image description here

視圖控制器的觀點,我們稱之爲parentView有一個子視圖,我們稱之爲redViewredView有一個孩子,一個文本字段,我們將其稱爲textField

層次結構看起來像這樣:

enter image description here

步驟2:設置特定於任何單個視圖的任何約束。在這種情況下,我們可能只想在文本視圖上設置寬度約束。現在,我只需設置200pts的寬度。

enter image description here

步驟3:設置textView和它的父,redView之間的約束。假設我們想要一個10pt邊框。讓我們添加這些約束:

enter image description here

一旦我們添加了這些限制,我們會得到一些汽車佈局警告和錯誤。對於初學者來說,由於限制,我增加了與和空間的SuperView不符合實際的尺寸,我會得到一些警告這樣的:

enter image description here

也將有描述丟失X些錯誤, Y的職位爲redViewtextView。這裏的錯誤實際上是必要的兩倍。 textView知道自己相對於redView的位置。我們不需要更多的約束來整理textView的位置。然而,redView不知道自己的位置,所以最終,textView也不完全知道。

我們可以更新textView的框架來擺脫警告,但讓我們繼續並修復實際的錯誤。

第5步:設置redView相對於superView的約束。 redView已經知道尺寸是多少。注意我們沒有錯誤redView的寬度。它只是不知道該去哪裏。在這種情況下,我會簡單地說我們想要redView居中。因此,我們將要添加這些約束:

enter image description here

現在我們已經解決的一些問題。唯一的問題是所有東西都是height

要解決這個問題,我們必須設置內容大小優先級textView。將這些全部設置爲1000,並將「內在尺寸」屬性更改爲「佔位符」。

enter image description here

到現在爲止,所有的自動佈局的錯誤應該消失,我們應該只警告留下,因爲我們的故事板幀不匹配,就是我們說的限制,他們應該。

我們可以解決這個問題,通過選擇parentView和更新所有的幀:

enter image description hereenter image description here

還有一個最後的警告這種自動佈局之謎,當談到基於內容的大小自動調整大小:如果發生了什麼我們文本視圖沒有內容?

如果我們的textview沒有內容,自動佈局會選擇0的高度,我們的用戶甚至無法看到那裏有一個文本視圖,更不用點擊它來添加內容(並使其擴大)。在使用自動佈局和基於內容的大小調整時,我們幾乎總是應該確保已經爲內容視圖設置了明確的或最小的大小。

我們不必擔心我們的textView的寬度,因爲我們將其明確設置爲200.因此,讓我們添加一個最小高度約束。通過添加任何高度約束開始:

enter image description here

現在去尺寸檢查爲textView,發現我們加入這個高度約束,並編輯成一個大於或等於約束:

enter image description here

故事板不會反映我們textView中內容的變化並適當調整它的大小,但您的約束現在已正確設置,並且這將在您的設備或模擬器中正確運行。

+1

我認爲我們還需要在紅色視圖上添加寬度約束。 – Priyatham51 2014-11-23 13:52:45

相關問題