0

UITextView のコンテンツ サイズを変更したいので、以下のように試しました。

[self.textView setContentSize:CGSizeMake(self.textView.contentSize.width, self.textView.contentSize.height+30)];

うまくいかないことがわかりました。さらに、何が起こるかを確認するために、ボタンのクリック イベントで作成します。

- (IBAction)click:(id)sender {
    static int y = 0;
    UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, y, 30, 30)];
    label.text = @"hello";
    y = y+30;
    [self.textView setContentSize:CGSizeMake(self.textView.contentSize.width, self.textView.contentSize.height+30)];
    NSLog(@"%f",self.textView.contentSize.height);
    [self.textView addSubview:label];
}

結果、setContentSizeうまくいかない?さらに、テキスト コンテンツの変更に応じて contentSize が変更されるだけです。

理由を知りたいのですが、UITextView の contentSize を手動で変更する方法はありますか?

追加: クリック アクションの出力

2014-11-17 17:05:56.306 viewControllerAdvance[2371:607] 82.000000 
2014-11-17 17:05:56.455 viewControllerAdvance[2371:607] 82.000000
2014-11-17 17:05:56.638 viewControllerAdvance[2371:607] 82.000000
2014-11-17 17:05:56.772 viewControllerAdvance[2371:607] 82.000000
2014-11-17 17:05:56.923 viewControllerAdvance[2371:607] 82.000000
2014-11-17 17:05:57.072 viewControllerAdvance[2371:607] 82.000000
4

1 に答える 1

0

以下のようにメソッドを変更して、要件を満たしているかどうかを確認してください。以下の方法を使用するには、スクロール ビューにテキスト ビューを追加する必要があり、テキスト ビューの高さを上げるたびに、スクロール ビューのコンテンツ サイズを大きくする必要があります。

- (IBAction)click:(id)sender { 

     static int y = 0;
     UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, y, 30, 30)];
     label.text = @"hello";
     y = y+30;
     [self.textView addSubview:label];

     CGFloat fixedWidth = textView.frame.size.width;
     CGFloat dynamicHeight = textView.frame.size.height+30;

     CGSize newSize = [textView sizeThatFits:CGSizeMake(fixedWidth, dynamicHeight)];
     CGRect newFrame = textView.frame;
     newFrame.size = CGSizeMake(fixedWidth, fmaxf(newSize.height, dynamicHeight));
     textView.frame = newFrame;

 }

また、textview.scrollEnabled = NO;を設定します。

于 2014-11-17T09:45:06.110 に答える