2016-06-12 86 views
1

我試圖創建一個文本視圖,其中的高度跟隨其中的行數。我工作的約束,但是在這裏我有一個奇怪的問題:textview中的文本不是垂直居中

  • 在開始的時候所有的中心,因爲我想

enter image description here

  • 當有一個突破,文本不垂直居中了,去的左上角

enter image description here

  • 當你刪除字符,然後回來前行,文本還沒有垂直居中

enter image description here

下面是代碼

func textViewDidChange(textView: UITextView) { //Handle the text changes here 
    if(textView.text != ""){ 
     self.animateSendButton(true) 
    }else{ 
     self.animateSendButton(false) 
    }//the textView parameter is the textView where text was changed 

    heightTextfieldConstraint.constant = self.textField.contentSize.height + 2 
    textField.contentInset.top = 1 
} 

我不明白爲什麼有這三種不同的情況,你有什麼想法解決它?

+0

如果你創建一個什麼二線和然後解僱鍵盤? – LinusGeffarth

+0

如果我解僱鍵盤文本留在左上角。 –

+0

你可以顯示你的代碼來創建這個效果嗎? – penatheboss

回答

1

你可以嘗試添加插圖頂端,BOT,左,右,應保持居中出現第二行即使在文本。

textView.textContainerInset = UIEdgeInsetsMake(5, 5, 5, 5) 
0

也許文字輸入後,你可以調用view.layoutIfNeeded()

2

保持文本視圖本身垂直居中,同時確保文本視圖的大小始終適合內容,可能會更好。您可以使用自動佈局來做到這一點。

設置文本視圖在其容器中垂直居中,並且還增加一個高度約束的文本視圖具有低的恆定值(約1個文本行的高度)。然後文本視圖的內容抗壓優先設置爲大於文本視圖的高度約束(見截圖)高的值。

enter image description here enter image description here

我已經做到了在「Main.storyboard」我的這個示範項目,如果你想看到一個工作示例: https://github.com/patricklynch/Walkthrough

+0

我已經嘗試過,但它的工作原理,但我想在文本視圖長大時增加容器的高度。在兩行之後,文本視圖變爲可滾動。你有這個解決方案嗎? –