8

設定したテキストの量でプログラムでUITextViewを変更したいのですが、インターフェイスビルダーでUITextViewを追加してこれを行うと、問題が発生します。

CGRect frame = textViewA1.frame;
frame.size.height = textViewA1.contentSize.height;
textViewA1.frame = frame;

すべて正常に動作しますが、プログラムでUITextViewを作成しても、高さは変わりません。次のようにします。

 UITextView *textViewA1 = [[UITextView alloc] initWithFrame:CGRectMake(5, 5, 320, 50)];
[textViewA1 setFont:[UIFont fontWithName:@"Enriqueta" size:15]];
[textViewA1 setScrollEnabled:NO];
[textViewA1 setUserInteractionEnabled:NO];
[textViewA1 setBackgroundColor:[UIColor clearColor]];
[textViewA1 setText:@"A lot of text"];
CGRect frame = textViewA1.frame;
frame.size.height = textViewA1.contentSize.height;
textViewA1.frame = frame;

このようにして、uitextviewの高さのサイズは変更されません。どうすればよいですか?

4

5 に答える 5

10

sizeToFitにメッセージを送信するだけUITextViewです。テキストにちょうど合うように高さを調整します。それ自体の幅や原点は変更されません。

[textViewA1 sizeToFit];
于 2012-06-29T00:39:32.427 に答える
10

私はあなたがする必要があると思います:

CGRect frame = textViewA1.frame;
frame.size.height = textViewA1.contentSize.height;
textViewA1.frame = frame;

addsubview の後:

[self.view addSubview: self.textView];
于 2013-06-03T07:09:43.857 に答える
0

たとえば、テキストのフレームサイズを計算する必要があります。

UIFont *font = [UIFont fontWithName:@"Enriqueta" size:15];
NSString *text = @"A lot of text";
CGSize frameSize = [text sizeWithFont:font];
CGRect originalFrame = textViewA1.frame;
textViewA1.frame = CGRectMake(CGRectGetMinX(originalFrame), CGRectGetMinY(originalFrame), frameSize.width, frameSize.height);

特定の高さを超えないようにするには、次を使用します。

CGFloat maxHeight = 100; // or something
CGSize frameSize = [text sizeWithFont:font constrainedToSize:maxHeight];
于 2012-06-28T23:35:50.407 に答える
0

このコードを試してください

UIFont * font = [UIFont fontWithName:@"Enriqueta" size:15];
textViewA1.font = font;
NSString * theText = @"A lot of text";
CGSize theStringSize = [theText sizeWithFont:font constrainedToSize:CGSizeMake(190, 1000000) lineBreakMode:UILineBreakModeWordWrap];
CGRect frame = textViewA1.frame;
frame.size.height = theStringSize.height;
textViewA1.frame = frame;

もちろん、これにはテキストビューの静的幅が 190 ピクセルあります。あなたは明らかにそれを変えることができます!!!

于 2012-06-29T00:14:31.853 に答える
-2

UITextViewテキストビューに複数行追加されたときにスクロールする

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView
{
    CGRect frameTextView = textView.frame;
    frameTextView.height -= KEY_BOARD_HEIGHT;
    textView.frame = frameTextView;
}
- (BOOL)textViewShouldEndEditing:(UITextView *)textView;
{
    CGRect frameTextView = textView.frame;
    frameTextView.height += KEY_BOARD_HEIGHT;
    textView.frame = frameTextView;
}
于 2012-11-20T04:19:23.383 に答える