如何根据填写内容的内容使文本视图的高度发生变化?

时间:2013-12-26 20:14:26

标签: ios

我的文本视图中填充了我正在使用JSON解析的内容。每个文本视图都有不同的内容,因此每个文本视图的高度都会有所不同。

可以通过故事板或代码添加文本视图。像这样:

UITextView *newsContent = [[UITextView alloc] initWithFrame:CGRectMake(0.0f, 238.0f, 290.0f, 120.0f)];
newsContent.font = [UIFont fontWithName:@"HelveticaNeue" size:12.0];
newsContent.editable = NO;
newsContent.scrollEnabled = NO;

无论哪种方式,我必须确定文本视图高度,但由于它每次都会更改,我正在寻找一种方法来动态地更改文本视图高度。

有任何帮助吗?感谢。

2 个答案:

答案 0 :(得分:0)

使用此

为desiredHeight

设置高值
CGSize boundingSize = CGSizeMake(FIXED_WIDTH, desiredHeight);
CGSize requiredSize = [someText sizeWithFont:[UIFont fontWithName:@"HelveticaNeue" size:12.0]
                           constrainedToSize:boundingSize
                               lineBreakMode:UILineBreakModeWordWrap];
CGFloat requiredHeight = requiredSize.height;

但是在iOS 6中不推荐使用此功能,您可以在iOS 7中使用以下功能

CGRect textRect = [someText boundingRectWithSize:boundingSize
                                 options:NSStringDrawingUsesLineFragmentOrigin
                              attributes:@{NSFontAttributeName:[UIFont fontWithName:@"HelveticaNeue" size:12.0]}
                                 context:nil];
CGFloat requiredHeight = textRect.size.height;

requiredHeight是textView宽度值为FIXED_WIDTH(常量)时为文本视图设置的高度,字体为[UIFont fontWithName:@“HelveticaNeue”大小:12.0],文本字符串为“someText”

答案 1 :(得分:0)

实现UITextView的委托方法,以便在文本每次更改时将文本视图的高度更改为其内容大小高度。如果您使用自动布局并且您有文本视图高度约束的出口,这是最简单的:

-(void)textViewDidChange:(UITextView *)textView {
    // [textView sizeToFit]; // seems no longer needed in iOS 7.1
    self.heightConstraint.constant = textView.contentSize.height;
}

但即使您没有使用自动布局,关键是要更改文本视图的框架,使其高度为contentSize.height