UITextView动态调整文本框/单元格大小



我从XML提要加载我的UITextView,所以文本是不断变化的。我试着调整单元格和文本的大小,它调整了单元格的大小,而不是文本视图,它只是不显示文本视图,或者有时只是它的一部分。

任何正确的建议,我将非常感激;

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    AssessObject *newObj1;
    newObj1=[totalArray objectAtIndex:indexPath.row];
    NSString *cellText = newObj1.routeText;
    UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:16.0];
    CGSize constraintSize = CGSizeMake(188.0, CGFLOAT_MAX);
    CGSize textViewSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];

    return textViewSize.height + 200;

}

检查您添加到单元格中的UITextView的autoreresizingmask

确保它的设置使它与单元格一起调整大小(您可以在IB中这样做,或者通过使用UIViewAutoresizingMaskFlexibleWidth|UIViewAutoresizingMaskFlexibleWidth值的代码)

设置textView的大小等于textView的contentSize。像这样:

CGRectMake(textView.frame.origin.x, textView.frame.origin.y, textView.frame.size.width, textView.contentSize.height);

我让textView的高度等于它的contentView的高度

设置UITextView的字体大小,文本内容和框架矩形,然后[UITextView sizeToFit]计算UITextView的contentSize,然后用contentSize的大小计算行高。

不要忘记调整UITextView的框架矩形的大小;

我使用Bruno的想法来调整我的TextView根据文本的数量,当我把它放到ScrollView。我就是这么做的。这里有一堆常数,你可能不会用到。将textView添加到ScrollView后,调整textView的大小是很重要的。

    // Programmatic creation of scroll view layout 
NSString *text = @"Your text";
CGFloat textOffSetInColumn = 10;
CGFloat infoTextWidth = 196;
CGFloat infoOffsetVertical = 36;
CGFloat initialTextHeight = 50;
// Create textView with initial height
CGRect infoTextFrame = CGRectMake(textOffSetInColumn, infoOffsetVertical, infoTextWidth, initialTextHeight);
infoTextView = [[UITextView alloc] initWithFrame:infoTextFrame];
infoTextView.text = text;
[scrollView addSubview:infoTextView];
// Resize textView
CGFloat infoTextHeight = infoTextView.contentSize.height;
infoTextFrame = CGRectMake(textOffSetInColumn, infoOffsetVertical, infoTextWidth, infoTextHeight);
infoTextView.frame = infoTextFrame;

如果你想改变TextView的大小并将其居中到之前的中心,你可以使用下面的代码:

   // Changing size of TextView and centering
    CGPoint center = self.categoryTextView.center;
    self.categoryTextView.frame = CGRectMake(_categoryTextView.frame.origin.x, _categoryTextView.frame.origin.y, _categoryTextView.frame.size.width, _categoryTextView.contentSize.height);
    self.categoryTextView.center = center;

用你自己的Outlet名称代替categoryTextView。

最新更新