2016-03-22 8 views
0

私はカスタムPopupView(extend UIView)を持っています。 PopupViewTextViewのみを含んでいます。
PopupViewの幅は、今私はTextViewが短い場合、ポップアップが短くなりますようPopupView高さはTextView高さに依存したい220
です。
PopUpを表示する前に、TextViewの高さを計算することはできますか?IOS - 描画する前にTextViewの高さを計算することが可能ですか

これは私がしたことですPopupView高さはTextViewに依存します。
- Iは、幅と高さ=スクリーンの幅と高さ
とPoupViewを示す - それは(layoutSubviewsに)描かれた後にその後私はTextView高さを計算
- それから更新PopupView高
=>これは、もし良くなりますちょうどポップアップ表示の高さ制約を削除し、テキストビューのスクロールを無効にします(:それはこれはあなたが尋ねたものではないが、それは何が必要でしょうです

- (void)layoutSubviews{ 
    [self.textView layoutIfNeeded]; 
    CGSize sizeThatShouldFitTheContent = [self.contentTextView sizeThatFits:self.textView .frame.size]; // this return correct value of `TextView` height 
    // After I get textview height, I update contraint height of PopupView 
} 
+0

私は 'TextView'の高さを描画した後に正しい方法で計算すると思います。テキストで計算するのは正確ではありません。なぜなら、 'TextView'のマージンについて考える必要があるからです。 – childrenOurFuture

+1

なぜAutoLayoutを使用しないのですか? – Lefteris

+0

@Lefteris、私は今autolayoutを使用しています。 'PopupView'を表示するとき、私は' PopupView'のウィンドウに制約幅、高さ、中心水平/垂直を加えます。 –

答えて

1

を描かれています前に、私はTextView高さを得ることができますスクロールが有効な場合、デフォルトの高さは0です。そうでない場合、テキストビューはコンテンツに合わせて自動的にリサイズされます)。この方法でポップアップがテキストビューをラップします。

あなたはそうのような制約を設定する必要があります。

TextView.Top = Popup.Top 
TextView.Left = Popup.Left 
TextView.Right = Popup.Right 
TextView.Bottom = Popup.Bottom 
Popup.Width = <some fixed value> //Yay! Stairs :) 

あなたがいずれかのプログラムでスクロールを無効にすることができます。textView.scrollingEnabled = NO;またはインタフェースビルダー経由。

関連する問題