原文: http://hi.baidu.com/redefine/blog/item/1bad04c3291b4c39e4dd3be1.html
做一个普通iPhone程序,以一个twitter客户端为例,最花时间的UI部分可能就是UITableView了,而其中最重要的部分是则是UITableViewCell。
以UITableViewCellStyleValue2为例,可以用左侧的Label来显示用户名,右侧的Label显示推的内容。那么接下来要处理的问题就是怎么样来控制单元格高度来完美显示长度不同的推。
左侧的Label叫做textLabel,只要简单的用一个语句加载用户名即可:
cell.textLabel.text = @"ztpala";
右侧的Label为detailTextLabel:
cell.detailTextLabel.text = @"这是一条很长很长很长很长很长很长很长的推"
如果仅使用这两条语句,显示结果就会是下面那样:
???? ztpala 这是一条很长很长很...
如果要显示完整的推,关键部分有两个:
1. 让detailTextLabel可以合适的换行
2. 调整单元格的大小从而可以完全显示detailTextLabel
cell.detailTextLabel.lineBreakMode = UILineBreakModeWordWrap; //如何换行
cell.detailTextLabel.numberOfLines = 0; //这个值设置为0可以让UILabel动态的显示需要的行数。
调整单元格的高度则比较复杂,需要小心计算,步骤如下:
1. 首先要确定一条消息所占的宽度,这个一般都是固定的,然后根据这个宽度来计算一段文字在这个宽度,某个字体下需要多少高度
UIFont *font = [UIFont systemFontOfSize:17.0] //先确定使用的字体,因为字体不同占用的空间也不相同
//假设someString代表消息,labelWidth代表某个固定宽度, 1000是个虚数只是为了创造一个能完全放下这些文字的空间
CGSize size = [someString sizeWithFont:font constrainedToSize:CGSizeMake(labelWidth, 1000) lineBreakMode:UILineBreakModeWordWrap];
//size即返回的完全显示消息实际需要的空间
2. 确定单元格高度。最关键的长度不一的消息所需的高度已经确定,下面只要加上上所需固定空间即可以确定单元格高度,完整代码
- (CGFloat)tableView:(UITableView *)atableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
UIFont *font = [UIFont systemFontOfSize:17.0]
CGSize size = [someString sizeWithFont:font constrainedToSize:CGSizeMake(labelWidth, 1000) lineBreakMode:UILineBreakModeWordWrap];
return size.height+10; // 10即消息上下的空间,可自由调整
}
总体来说很简单,但当你需要自己格式化单元格显示的时候,整个处理还是比较繁杂。
分享到:
相关推荐
本项目“swift-这是一个示例项目实现功能UITableViewCell动态高度基于自动布局”是针对Swift开发的一个实例,旨在展示如何利用自动布局(Auto Layout)来动态计算UITableViewCell的高度,并实现标签(UILabel)的...
这就是AutoLayout在动态计算UITableViewCell高度中的作用。 AutoLayout是苹果提供的布局管理系统,它允许开发者在不同尺寸和方向的屏幕上创建适应性界面。在UITableView中,通过设置AutoLayout约束,我们可以根据...
对于`UITableViewCell`,确保所有的子视图(如UILabel)都有正确的约束,包括顶部、底部、左右边距以及与内容相关的约束(例如,UILabel的行数和行间距)。一旦约束设置完毕,系统就能根据内容自动调整`...
在iOS开发中,UITableView是展示数据列表的一种常见控件,其内部的单元格(UITableViewCell)通常需要根据内容动态调整高度。这个过程涉及到自动布局(Auto Layout)和UITableView的自适应高度计算。本知识点将深入...
实现动态计算UITableViewCell高度主要涉及以下几个步骤: 1. **启用自动布局(Auto Layout)**:在iOS开发中,我们通常使用Auto Layout来定义视图的约束,以便根据内容自动调整大小。在UITableViewCell中,确保所有...
在实际应用中,我们经常需要动态调整UITableViewCell的高度,以便适应不同内容的显示需求,尤其是当单元格内部包含可变长度的文本时,如UILabel。`UITableViewCell自适应高度`就是指根据单元格内内容的大小自动调整...
本Demo "swift-动态计算UITableViewCell高度的Demo" 正是针对这一需求进行的实践。 首先,我们要明白在UITableView中,每个cell的高度是由其内容决定的。为了实现动态高度,我们需要遵循UITableViewDataSource协议...
在iOS开发中,`UITableViewCell`的高度自适应是一个关键的特性,它使得表格视图能够根据内容动态调整单元格的高度,从而提供更好的用户体验。这个话题主要涉及到`UITableView`和`UITableViewCell`的交互,以及Auto ...
本文将详细介绍如何在UITableViewCell中使用Auto Layout来实现内容动态调整高度。 首先,了解Auto Layout的基本概念。Auto Layout是一种布局系统,用于定义视图之间的关系,包括位置和大小,以便在各种屏幕尺寸和...
在Swift开发中,创建自定义的UITableViewCell时,我们经常需要根据单元格内显示的内容动态地计算其高度。这是因为不同数量的文字、图片或者其他元素会导致单元格的高度各不相同。`SoolyMoment`项目提供了一个解决...
在这个类中,你需要设置好所有可能影响单元格高度的元素,如UILabel、UIImageView等,并进行相应的约束布局。 2. 注册单元格:在UITableView的`awakeFromNib`或者`viewDidLoad`方法中,注册你的模板单元格类,可以...
当我们在UITableViewCell中添加自定义控件,比如UILabel,时,可能会遇到一个常见的问题:如何根据内容动态调整Cell的高度。"ios-动态控制TableViewCell高度.zip"这个压缩包文件提供了一个名为CellHeightDemo的示例...
在Auto Layout环境下,我们可以通过此方法预测UILabel显示文本所需的最小高度,从而动态调整cell的高度。 下面是一步步实现这个功能的步骤: 1. **创建自定义UITableViewCell**: 创建一个继承自UITableViewCell...
首先,我们要理解在iOS8之前,为了实现动态高度的TableViewCell,开发者通常需要手动计算每个单元格的高度,并在`tableView:heightForRowAtIndexPath:`代理方法中返回。这种方式繁琐且容易出错,特别是在内容多变的...
1. 创建UITableViewCell子类:通过继承UITableViewCell,我们可以添加自定义的UI元素,如UILabel、UIImageView、UIButton等,并在子类中重写layoutSubviews方法来布局这些元素。 2. 注册Cell:在UITableView的...
这可以通过设置`numberOfLines`为0来实现文本自动换行,并结合`sizeToFit`方法来自动调整UILabel的大小,最后根据UILabel的实际高度来动态计算UITableViewCell的高度。示例如下: ```objective-c - ...
`iOS-Masonry Cell 动态高度 自动布局 Autolayout.zip`这个压缩包中包含了一个名为`MASCellTest`的项目,它展示了如何利用Masonry库来实现UITableViewCell的动态高度计算。Masonry是一个基于AutoLayout的轻量级框架...
而动态高度的UITableViewCell则可以根据内容自适应高度,使得界面更加灵活且美观。本示例将详细解析如何在Objective-C中实现具有动态高度的UITableViewCell。 首先,我们需要理解UITableViewDelegate中的两个关键...
"ios-一行代码cell高度自适应.zip"这个压缩包提供了一种简洁的方法来解决这个问题,无需繁琐的Auto Layout约束,而是利用Objective-C的Runtime机制动态计算UILabel的高度,进而自动调整UITableViewCell的高度。...