我正在应用中创建详细视图屏幕。详细显示的内容可能有也可能没有图像。我在显示我的细胞时使用估计的行高。
xib具有以下约束:
当我显示图像时效果很好,但如果没有图像,则单元格的渲染高度约为40,我会收到警告。
仅警告一次:检测到模糊限制的情况 建议tableview单元格的内容视图的高度为零。我们 考虑到无意识的崩溃和使用标准高度 代替。
解决此问题的最佳方法是什么?我真的不想尝试根据图像属性有条件地更改表的行数。
理想情况下,我喜欢使用上述约束的约束,图像显示边缘到边缘,剪裁很好,最大高度为200.或者如果没有图像,则高度为0。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
EntityContentObject *object = (EntityContentObject *)self.resultsArray[0];
self.imageURLString = object.entityPicture;
NSLog(@"IMAGE URL STRING: %@", self.imageURLString);
ImageTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ideaImgCell"];
if (!cell)
{
[tableView registerNib:[UINib nibWithNibName:@"ImageTableViewCell" bundle:nil] forCellReuseIdentifier:@"ideaImgCell"];
cell = [tableView dequeueReusableCellWithIdentifier:@"ideaImgCell"];
}
if([self.imageURLString isEqualToString:@""]){
// no image to display;
}else{
[cell.ideaImage setImageWithURL:[NSURL URLWithString:self.imageURLString] placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
}
NSLog(@"CELL IDEA IMAGE HEIGHT: %@", NSStringFromCGRect(cell.ideaImage.frame));
return cell;
答案 0 :(得分:0)
在项目中写下这些行
-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {
if(no image){ // put condition
return 0;
}
else{
return 200;
}
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
{
if(no image){
return 0;
}
else{
return UITableViewAutomaticDimension;
}
}