2016-06-12 2 views
1

テキストビューの高さがそれに続く行の数に追従しようとしています。私は制約に働いてきたが、ここで私は好奇心の問題ました:私は テキストビュー内のテキストが垂直に配置されていません

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 
    } 
    

    ですなぜこれらの3つの異なる場合がありますか、あなたはそれを解決するための任意のアイデアを持っていますか?

+0

作成した場合と、キーボードを閉じますか? – LinusGeffarth

+0

キーボードのテキストを消すと、左上隅に残ります。 –

+0

このエフェクトを作成するためのコードを表示できますか? – penatheboss

答えて

1

2番目の行が表示された後でも、テキストを中央に維持するように、上部、ボット、左右に挿入を試行して追加できます。

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

私は試しましたが、それは動作しますが、テキストビューが大きくなるとコンテナの高さを上げたいと思います。ここでは、2行後にテキストビューがスクロール可能になります。これに対する解決策はありますか? –

関連する問題