2013-07-31 69 views
0

根据这tutorial,我有一个UITextViewUITableViewCell。当UITableView已加载时,我想要UITextViewUITableViewCell调整它们的高度。UITextView里面的UITableViewCell

但是我根据教程所做的一切,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); 
} 
+0

您是否在故事板中制作此单元格,并且您是否使用自动布局? – rdelmar

回答

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); 

你会发现这个question

+0

谢谢,我使用UILabel而不是UITextView来解决这个问题。 – lixiaoyu

0

TextView的更多信息,里面

enter image description here

使用的UILabel而不是UITextView的或具有默认填充删除填充

textView .contentInset = UIEdgeInsetsMake(-11,-8,0,0); 
相关问题