OC

Knowledge OS
登录 注册
全部话题 移民 创业 iOS Mac Objective-C Swift Android 招聘 求职

UITextView在UITableViewCell 中自适应高度的问题

Frusola
Frusola 发布于 2013年07月31日
无人欣赏。

我想将一个UITextView放入到UITableViewCell当中,然后网络请求获取到数据后,放入UITextView,根据文字大小来动态调整UITextView和UITableViewCell的高度。然后查找资料后照以下代码书写 enter code here

- (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))];
 //[cell.textLabel setText:[self.contentArray objectAtIndex:[indexPath row]]];
 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);
}

可是上面代码实现的效果,不能将UITextView完全显示出来,还有有一部分数据需要滚动某个UITableViewCell中的UITextView才能显示出来。这个问题出在什么地方,谢谢。

共2条回复
楼长 ·
adad184 回复于 2013年07月31日

UITextView显示出来的内容上下左右其实是有padding的 所以显示出来的内容会比你实际计算出来的高度要高

sizeWithFont 计算的高度应该使用UILabel来显示

label.numberOfLines=0 ;

或者你可以把UITextview的padding给消除 但是貌似没有官方的做法

textView .contentInset = UIEdgeInsetsMake(-11,-8,0,0);

你可以看看这个区别 alt text

2楼 ·
Frusola 回复于 2013年08月01日

问题解决,非常感谢

登录 或者 注册

AltStyle によって変換されたページ (->オリジナル) /