使用 tableViewCell 高度调整 UILabel 的高度
Posted
技术标签:
【中文标题】使用 tableViewCell 高度调整 UILabel 的高度【英文标题】:Resizing the height of UILabel with the height of tableViewCell height 【发布时间】:2013-10-03 12:20:31 【问题描述】:我是 ios 开发的新手。我正在使用动态高度的 tableView。 tableViewCell 的高度在点击时增加或减少我正在使用此代码...
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
if ([self.selectedPath isEqual:indexPath])
return 250;
else
return 44;
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
onSelectCount++;
self.selectedPath = indexPath;
[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation: UITableViewRowAnimationLeft];
self.selectedRowIndex = [NSNumber numberWithInteger:indexPath.row];
[self.tableView1 deselectRowAtIndexPath:indexPath animated:YES];
//First we check if a cell is already expanded.
//If it is we want to minimize make sure it is reloaded to minimize it back
if( onSelectCount==1 )
NSLog(@"num=%d",onSelectCount);
NSLog(@"First Condition");
[tableView beginUpdates];
NSIndexPath *previousPath = [NSIndexPath indexPathForRow:self.selectedRowIndex.integerValue inSection:0];
self.selectedRowIndex = [NSNumber numberWithInteger:indexPath.row];
self.selectedPath=indexPath;
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:previousPath] withRowAnimation:UITableViewRowAnimationFade];
[tableView endUpdates];
if(self.selectedPath.row!=indexPath.row)
[tableView beginUpdates];
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:selectedPath] withRowAnimation:UITableViewRowAnimationFade];
[tableView endUpdates];
selectedPath=indexPath;
onSelectCount=0;
[self tableView:tableView didSelectRowAtIndexPath:selectedPath];
if(self.selectedRowIndex.integerValue == indexPath.row && onSelectCount==2)
[tableView beginUpdates];
self.selectedRowIndex = [NSNumber numberWithInteger:-1];
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
onSelectCount=0;
[tableView endUpdates];
现在我想添加一些标签以在 tableViewCell 上显示一些信息,但是当我单击单元格时,它会完美调整大小,但单元格上的标签不会调整大小。请告诉我如何使用单元格高度调整 UILabel 的大小。任何帮助将不胜感激...
【问题讨论】:
【参考方案1】:使用方法- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
来实现这一点。将用于更改单元格高度的整个逻辑从 didSelectRow 移动到 cellForRowAtIndexPath 也很好。
回答你的问题:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
CGRect sizeRect = cell.textLabel.frame;
sizeRect.size.height = cell.contentView.frame.size.height;
cell.textLabel.frame = sizeRect;
return cell;
其中 textLabel 是标签的名称。 基本思想是你取标签的框架,然后将它的高度设置为单元格视图的高度,然后将新的大小设置为标签。
【讨论】:
以上是关于使用 tableViewCell 高度调整 UILabel 的高度的主要内容,如果未能解决你的问题,请参考以下文章
自动调整 TableViewCell 的高度以适应 iOS 6 中的 UIImageVIew
使用 Autolayout 自定义具有动态高度和全宽图像的 TableViewCell
TableView单元格内的TableView,自动调整单元格高度
tableViewCell 的 ContentView 不能正确自动调整大小?
转使用Autolayout xib实现动态高度的TableViewCell
让自定义 TableViewCell 的 UIimageView 宽度为单元格宽度的 1/3,单元格高度 = 图像纵横比