上地址
https://github.com/lbz235/V2EX
工作主要是 js 和 php,有空学 ios,边学边撸断断续续写了几个月
之前卡在高度计算,刚好工作任务多就放了大半个月
tableView 在加载数据时才给 UILbale 的 text 赋值,怎样才能正确的计算 UILabel 的高度
今天继续查资料没找到什么好办法,V 友在类似这种计算高度时都是怎么解决的?
//渣代码 轻喷 目前以撸出为目标 未考虑优化
1
mofet 2015-12-01 16:49:14 +08:00
如此如此
+ (CGSize)getLabelSize:(NSString *)title { UIFont *font = [UIFont systemFontOfSize:YOUR_FONT_SIZE_HERE]; NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping; NSDictionary *attributes = @{NSFontAttributeName:font, NSParagraphStyleAttributeName:paragraphStyle.copy}; CGSize size = [title boundingRectWithSize:CGSizeMake(YOUR_WIDTH_HERE, INT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil].size; size.width = ceil(size.width); size.height = ceil(size.height); return size; } |
2
CDuXZMAPgHp1q9ew 2015-12-01 16:56:40 +08:00
|
3
dorentus 2015-12-01 17:32:52 +08:00
iOS 8 开始,给 table view 设一个合理的 estimatedRowHeight ,再把 wHeight 设成 UITableViewAutomaticDimension 。
然后 cell 里面就可以使用 Auto Layout 来自动推断每个 cell 的高度,不需要再写任何其它代码。 |
4
dorentus 2015-12-01 17:33:24 +08:00
s/wHeight/rowHeight/
|
5
babyhome 2015-12-01 17:36:13 +08:00 via iPhone
ios8 超级简单 根本不用你计算
|
6
laobaozi OP |
7
yh4801480 2015-12-01 18:05:25 +08:00
楼主 接口是怎么抓到的 我也想撸一个-。-
|
9
loveuqian 2015-12-01 18:36:51 +08:00
如果你要兼容 iOS7 你就不能用那个预算高度了
我的做法是在模型里面增加一个 cellHeight 属性 不通过 rowHeight 固定高度,通过代理方法返回每一个 cell 的高度 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { LXCategoriesDetailsModel *model = self.downloadedMusicArr[indexPath.row]; return model.cellHeight; } 然后重写 cellHeight 的 getter 方法,在里面计算高度 遇到文字就这么算 CGFloat textH = [self.name boundingRectWithSize:CGSizeMake(textW, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{ NSFontAttributeName : [UIFont systemFontOfSize:17], } context:nil].size.height; self.name 是文字内容 textW 是宽度,然后告诉他字体大小是 17 他会返回我一个 frame 取里面的 height 就是这段文字在这个字体,这个宽度下,会是这么高 |
10
Yvette 2015-12-01 23:23:14 +08:00 via iPhone
歪个楼,如果有上传图片的功能就好了 :)
|
14
cielpy 2015-12-04 11:48:06 +08:00
看了下楼主代码,首页那些 tab 不用每个 tab 一个 ViewContreoller 的,列表样式完全一样,只是获取数据的时候有一个值不一样,解析方式也是一样的,一个 VC 然后设置一个 type 之类的东西区别获取数据就行了吧。
|
15
laobaozi OP |