我有一个关于uitableviewcells的uitableview但是我的一些文本很长,它直接进入单元格的边缘,我的附件刻度视图将在选中时显示..
我正在包装文本,如果它超出宽度并进入第二行。但是我希望有一种很好的方法来限制这个UITableViewCell标签的宽度。
答案 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,无论位置和位置如何。你想要的大小。