1

これはとても簡単なはずですが、何らかの理由でうまくいきません。テキスト ボックスのサイズを変更し、理想的には下部にパディングを入れたいと考えています。とりあえず適当にリサイズしてみます。

セットアップ

ストーリーボードの単一ビュー

インターフェース

@property (weak, nonatomic) IBOutlet UITextView *messageTextBox;

実装

- (void)viewDidLoad
{
    [super viewDidLoad];
    _messageTextBox.text = _message.body;
    [_messageTextBox sizeToFit];  
}

フレームの高さを変更したり、ここで他のユーザーの提案を変更したりするなど、いくつかの異なる解決策を試しました...

これはios7とxcode 5を使用していますが、なぜそのような基本的な機能に問題があるのか​​ わかりません。

混乱を招くために、sizeToFit の後にフレームの高さと contentsize を記録しました。私の結果は次のとおりです。

2013-10-02 18:40:20.803 narg[21467:a0b] H of the frame: 618.000000
2013-10-02 18:40:20.804 narg[21467:a0b] W of the frame: 469.000000
2013-10-02 18:40:20.804 narg[21467:a0b] Reported H of contentSize property on object 42.000000

したがって、フレームは正しい高さを明確に認識していますが、ディスプレイではすべてのテキストが切り取られ、ボックスのサイズが調整されません。

4

2 に答える 2

4

これが私の問題に対する答えでした。ある時点で、ビューで Autolayout をオフにしました。これにより、ビューが効果的にロックされ、フレーム サイズを調整できなくなりました。

フレームのサイズが変更されないという同様の問題が発生している場合は、次の手順を試してください。

  • インターフェイス ビルダーに移動し、ビューを開きます
  • ファイル インスペクターをクリックします。
  • 自動レイアウトの選択を解除します。

これで私の問題は解決しました。

于 2013-10-03T00:09:28.270 に答える
0

テキストに応じてUITextViewの適切なフレームを計算するには、こちら_message.bodyをご覧ください。次のようにギャップを追加して、下部のパディングを作成できます。

- (CGFloat)textViewHeightForAttributedText:(NSAttributedString*)text andWidth:(CGFloat)width
{
    UITextView *calculationView = [[UITextView alloc] init];
    [calculationView setAttributedText:text];
    CGSize size = [calculationView sizeThatFits:CGSizeMake(width, FLT_MAX)];
    return size.height + 50; // 5O is your gap for example
}
于 2013-10-02T22:37:47.277 に答える