使用文本以编程方式更改UITextView高度

时间:2012-06-28 23:31:09

标签: iphone ios uitextview cgrect

我想用我设置的文本量以编程方式更改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的高度大小不会改变,我该怎么做?

5 个答案:

答案 0 :(得分:10)

只需将sizeToFit讯息发送至UITextView即可。它将调整自己的高度以适应其文本。它不会改变自己的宽度或原点。

[textViewA1 sizeToFit];

答案 1 :(得分:10)

我认为你需要这样做:

CGRect frame = textViewA1.frame;
frame.size.height = textViewA1.contentSize.height;
textViewA1.frame = frame;
在addsubview之后

[self.view addSubview: self.textView];

答案 2 :(得分: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];

答案 3 :(得分: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;

当然,textview的静态宽度为190像素。你显然可以改变它!

答案 4 :(得分:-2)

在textview中添加多行时滚动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;
}