设置UITableViewCell文本的宽度

时间:2012-08-23 05:21:32

标签: iphone ios uitableview

我有一个关于uitableviewcells的uitableview但是我的一些文本很长,它直接进入单元格的边缘,我的附件刻度视图将在选中时显示..

我正在包装文本,如果它超出宽度并进入第二行。但是我希望有一种很好的方法来限制这个UITableViewCell标签的宽度。

4 个答案:

答案 0 :(得分:1)

在你的cellForRowAtIndexPath:函数中。第一次创建单元格时:

 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
 if (cell == nil)
 {
   cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
   cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
   cell.textLabel.numberOfLines = 0;
   cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:17.0];
 }   

现在指定你的UITableViewCell的大小,所以在你的heightForRowAtIndexPath函数中这样做:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
  NSString *str = [[arrTexts objectAtIndex:indexPath.row]; // filling text in label  
  CGSize maximumSize = CGSizeMake(300, 100); // change width and height to your requirement
 CGSize strSize = [str sizeWithFont:[UIFont fontWithName:@"Helvetica" size:17] constrainedToSize:maximumSize lineBreakMode:UILineBreakModeWordWrap] //dynamic height of string depending on given width to fit

 return (10+strSize.height+10) // caculate on your bases as u have string height
}

答案 1 :(得分:1)

cellForRowAtIndexPath中设置textLabel

的宽度
cell.textLabel.frame = CGRectMake(cell.textLabel.frame.origin.x, cell.textLabel.frame.origin.y, 280, cell.textLabel.frame.size.height);

这就是全部。

答案 2 :(得分:0)

我认为您需要子类UITableViewCell来覆盖-layoutSubviews ...调用super,然后适当地构建您的标签。限制我的帮助,但我还没有在iOS上使用它们。 (假设问题是内置布局功能使标签尽可能宽,以适应您的文本)

答案 3 :(得分:0)

有两种方法可以做到这一点。

1)创建一个自定义的UITableViewCell类,添加你的UILabel,无论位置和位置如何。你想要的大小。然后在cellForRowAtIndexPath方法中使用它。

2)否则,不要使用UITableViewCell的默认UILabel即。 textLabel& detailTextLabel,在单元格中添加您自己的UILabel,无论位置和位置如何。你想要的大小。