有条件地显示通过故事板创建的图像的最佳方法是什么?

时间:2016-12-12 20:11:59

标签: uitableview uiimageview autolayout storyboard

我正在应用中创建详细视图屏幕。详细显示的内容可能有也可能没有图像。我在显示我的细胞时使用估计的行高。

xib具有以下约束:

  • 尾随空间以超级视图
  • 领导空间以超级视图
  • 底层空间以超级视图
  • 超级视图的最佳空间
  • 高度<= 200

当我显示图像时效果很好,但如果没有图像,则单元格的渲染高度约为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;

1 个答案:

答案 0 :(得分:0)

我认为你必须看到这个https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/WorkingwithSelf-SizingTableViewCells.html

在项目中写下这些行

    -(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; 
    }

 }