0

根据本教程,我有一个UITextView里面的UITableViewCell. UITableView加载后,我想要调整它们UITextViewUITableViewCell高度。

但是我都是按照教程做的,UITextView无法显示全部内容,部分UITextView内容还需要滚动显示。

这是我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *contentTableIdentify = @"contentTableIdentify";

    UITableViewCell *cell = nil;
//UILabel *label = nil;
    UITextView *textView = nil;
    cell = [self.tableView dequeueReusableCellWithIdentifier:contentTableIdentify];
    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:contentTableIdentify];

        textView = [[UITextView alloc] initWithFrame:CGRectZero];
        [textView setTextColor:[UIColor blackColor]];
        [textView setFont:[UIFont fontWithName:@"Helvetica" size:12.0f]];
        [textView setBackgroundColor:[UIColor clearColor]];
        [textView setTag:1];
        [textView setEditable:NO];
        [[cell contentView] addSubview:textView];
    }

    NSString *text = [self.contentArray objectAtIndex:[indexPath row]];
    CGSize constraint = CGSizeMake(320 - (10 * 2), 99999.0f);
    CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:12.0f] constrainedToSize:constraint lineBreakMode:NSLineBreakByWordWrapping];

    if (!textView)
        textView = (UITextView *)[cell viewWithTag:1];

    [textView setText:text];
    [textView setFrame:CGRectMake(10, 10, 320 - (10 * 2), MAX(size.height, 44.0f))];

    return cell;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *text = [self.contentArray objectAtIndex:[indexPath row]];

    CGSize constraint = CGSizeMake(320 - (10 * 2), 20000.0f);

    CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:12] constrainedToSize:constraint lineBreakMode:NSLineBreakByWordWrapping];

    CGFloat height = MAX(size.height, 44.0f);

    return height + (10 * 2);
}
4

2 回答 2

0

textview 内部有默认填充

在此处输入图像描述

使用 UILabel 而不是 UITextview 或删除填充

textView .contentInset = UIEdgeInsetsMake(-11,-8,0,0);
于 2013-07-31T17:02:28.517 回答
0

在计算单元格的高度时,您需要考虑文本视图的填充。

如果您执行以下操作:

//  Add 16px (8+8) to account fr the UITextView padding    
CGSize constraint = CGSizeMake(320 - (10 * 2) -16, 99999.0f);
GSize size = [text sizeWithFont:[UIFont systemFontOfSize:12.0f] constrainedToSize:constraint lineBreakMode:NSLineBreakByWordWrapping]

CGFloat height = MAX(size.height, 44.0f);

return height + (10 * 2) + (8*2);

您将找到有关此问题的更多信息

于 2013-07-31T15:45:54.830 回答