原文: 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即消息上下的空间,可自由调整
}
总体来说很简单,但当你需要自己格式化单元格显示的时候,整个处理还是比较繁杂。
分享到:
相关推荐
可以根据需要不同来选择使用高度自适应和宽度自适应.
UIlabel根据文本、字体获得label宽度;自适应宽高
UILabel、UILabel基本用法、UILabel详解,UILabel常用方法
简介 UILabel类实现了一个只读文本视图。您可以使用这个类来画一个或多个行静态文本,比如你可能使用确定的其他部分的用户界面。...有时我们需要根据UILabel内部的字体格式(包括字体大小,行间距)来动态调整
下面小编就为大家带来一篇iOS 设置UILabel的行间距并自适应高度的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要为大家详细介绍了iOS UILabel根据内容自动调整高度,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
用于iPad的自动布局,自定义cell然后每个cell中得UIlabel 都采用的是Constraints自动布局。然后结果出现了偏差。
前言 UILabel 是的使用频率是非常频繁,当文字较多的时候,会显得密密麻麻的,不利于...综上所述:分为以下三步进行设置“UILabel 内容的间距及高度的计算” 1. 通过使用 UILbael 的分类实现修改间距的功能。 2 .
github地址:https://github.com/fengzhihao123/UI-Swift 如果帮助到了大家,还望点个star和fork
ios uilabel的代码 ios uilabel的代码 ios uilabel的代码 ios uilabel的代码 ios uilabel的代码 ios uilabel的代码
UIButton,UILabel文字旋转(倾斜),UIButton,UILabel文字旋转(倾斜)
简单方便的给UILabel内容中某几个文字添加点击事件,实现定制要求
微信评论点击确定所点击的用户,获取UIlabel点击处的文字
当我们要在一个UILabel组件上显示指定文章格式和行间距 字体颜色或风格且高度不确定的文章时,只需要把该文件拉进工程。把头文件导入,即可让UILabel组件调用分类方法。任可要求均可满足。并且,还可以求出文章的...
UILabel 和UITextField 的常用api 介绍和使用
UILabel的删除线效果,主要是继承UiLabel类后重写方法得到 用法跟UILabelg一样,异常简单,多了一个 是否加上删除线的 属性而已
当前 UILabel 类为方法的实现类,针对声明类中对应的封装方法进行具体的相关方法的逻辑实现处理,最终将处理结果返回。
iOS UIlabel 闪烁
整个工程怎么不能直接上传呢,我就把主要代码的类上传了