UITableViewCell 如何在 AutoLayout 下根据是否有 ImageView 自适应高度
有两种 cell
的样式,一种是需要加载一个图片的 Cell_A
,一种是没有的 Cell_B
。Cell_B
的高度比 Cell_A
要小。
那么问题来了,如何让 cell
根据情况自动改变高度呢?
我有一个函数来判断每行到底需不需要图片
- (BOOL) hasImageAtIndexPath:(NSIndexPath *)indexPath {
NSDictionary* item = [[dataDict objectForKey:@"items"] objectAtIndex:indexPath.row];
NSString* url = [item objectForKey:@"url"];
return ![url isEqual: @"NULL"];
}
这样写之后,得到的全是 249 这个高度的。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if ([self hasImageAtIndexPath:indexPath]) {
return 249.0;//cell_a
} else {
return 150.0;//cell_b
}
}
UPDATE:
原来 item
里的关键键值对长这个样子,解析出来是一个 NSNull
的对象,并不是一个 NSString
url = "<null>";
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
说说我看到的几个问题:
(1)首先你用的语法太老旧了,现在用literal syntax,代码会变成这样:
(2)比较字符串应该用:
(3)如果一直是249,那显然hasImageAtIndexPath:有问题;
(4)是否有必要做成两个cell?从你的内容上看丝毫看不到Auto Layout的影子。