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>";
uitableviewcell ios autolayout iphone
Answers
说说我看到的几个问题:
(1)首先你用的语法太老旧了,现在用literal syntax,代码会变成这样:
- (BOOL)hasImageAtIndexPath:(NSIndexPath *)indexPath
{
NSDictionary* item = dataDict[@"items"][indexPath.row];
NSString* url = item[@"url"];
return ![url isEqual:@"NULL"];
}
(2)比较字符串应该用:
[url isEqualToString:@"NULL"];
(3)如果一直是249,那显然hasImageAtIndexPath:有问题;
(4)是否有必要做成两个cell?从你的内容上看丝毫看不到Auto Layout的影子。