我试图阅读一些RSS数据。我有不同大小的数据。数据存在于tabke视图数据对象中。我使用标签添加数据并调整数据大小。没有成功。请帮忙。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
NSLog(@"in the tabel view cell");
heightOfCell=[self tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Default"];
if (cell == nil)
{
//cell = [[[UITableViewCell alloc] initWithFrame:CGRectMake(55.0,42.0,245.0,heightOfCell) reuseIdentifier:@"Default"] autorelease];
UILabel *label = [[UILabel alloc] init];
NSString *cellText = [[TableViewData news] valueForKey:[NSString stringWithFormat:@"%d",[indexPath row]]];
UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:10.0];
CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT);
label.text = [[TableViewData news] valueForKey:[NSString stringWithFormat:@"%d",[indexPath row]]];
CGSize labelSize = [[[TableViewData news] valueForKey:[NSString stringWithFormat:@"%d",[indexPath row]]] sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
label.lineBreakMode=UILineBreakModeWordWrap;
[label sizeThatFits:labelSize];
cell = [[[UITableViewCell alloc] initWithFrame:CGRectMake(55.0,42.0,245.0,heightOfCell) reuseIdentifier:@"Default"] autorelease];
//[label sizeToFit];
[cell addSubview:label];
[label release];
}
}
答案 0 :(得分:23)
您需要使用以下方法。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 45;
}
您需要根据您的要求更改高度
应该注意的是,默认高度是44。
答案 1 :(得分:4)
您需要实施以下方法:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
// some code that compute row's height
}
答案 2 :(得分:3)
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 50;
// This is just Programatic method you can also do that by xib !
}
您也可以在Interface Builder中更改它。打开* .xib文件,选择表格,显示“大小”检查器,然后更改行高。但请注意,默认高度为44像素。
答案 3 :(得分:3)
有两种方法可以设置UITableViewCell
的高度。:
UITableView
有一个名为rowHeight
的属性,您可以使用该属性将所有UITableViewCell
设置为相同的行高; UITableViewDelegate
协议并包含tableView:heightForRowAtIndexPath:
方法,那么您有责任决定当前的UITableViewCell'height
。在实践中,我们总是使用委托方法来设置单元格的高度,只有每个单元格的高度可能是动态的!并且该方法优先于UITableView
的{{1}}属性!所以,我认为您可能更喜欢第二种方法:
rowHeight
答案 4 :(得分:1)
我看到了很多解决方案,但都是错误的或不完整的。你不需要计算任何东西(没有字体,没有大小,没有)... 您可以在viewDidLoad和autolayout中解决5行的所有问题。 这对于客观的C:
_tableView.delegate = self;
_tableView.dataSource = self;
self.tableView.estimatedRowHeight = 80;//the estimatedRowHeight but if is more this autoincremented with autolayout
self.tableView.rowHeight = UITableViewAutomaticDimension;
[self.tableView setNeedsLayout];
[self.tableView layoutIfNeeded];
self.tableView.contentInset = UIEdgeInsetsMake(20, 0, 0, 0) ;
对于swift 2.0:
self.tableView.estimatedRowHeight = 80
self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.setNeedsLayout()
self.tableView.layoutIfNeeded()
self.tableView.contentInset = UIEdgeInsetsMake(20, 0, 0, 0)
现在使用xib创建您的单元格或在Storyboard中创建tableview 有了这个你不需要实现任何更多或覆盖。 (不要忘记数字os行0)和底部标签(约束)降级"内容拥抱优先级 - 垂直到250"
您可以在下一个网址中下载代码: https://github.com/jposes22/exampleTableCellCustomHeight
答案 5 :(得分:0)
在tableView:cellForRowAtIndexPath:
委托调用之前,您必须知道所有单元格的高度,这可能需要您在视图控制器或其他列表中存储高度。
自定义单元格高度的功能是tableView:heightForRowAtIndexPath:
。表格视图的默认高度为44像素,供参考。
您可以找到文档here。