2016-06-12 79 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

我已经尝试过,但它的工作原理,但我想在文本视图长大时增加容器的高度。在两行之后,文本视图变为可滚动。你有这个解决方案吗? –