将UITableViewCell高度设置为UIImage高度?

问题描述:

我有一个自定义TableViewCell,我希望它的高度匹配的UIImage的大小。单元格中的UIImageView被设置为纵横比,我希望UIImageView和它包含的UIImage一样高,宽度等于表格视图的宽度(屏幕宽度)。在方法heightForRowAtIndexPath中:我有一个图像,表示给定indexPath.row中的单元格。这些单元格是这样配置的,如果我将heightForRowAtIndexPath设置为500,那么imageview是唯一会被拉伸的视图。将UITableViewCell高度设置为UIImage高度?

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
     let image = comics[indexPath.row].image 

     return image.size.height + 103 
} 

103是使细胞高度(按钮和标签)的其余部分(见sceenshot)的点。

现在的问题:所有的细胞太高!仿佛这不会很奇怪,其中有些太短了? (图片)我已经阅读了很多类似的帖子,但没有人回答我的问题。 不知何故image.size.height大于图像视图中的实际图像? 我只是希望uiimageview与AspectFit中的图像尺寸相同。

你有什么想法吗?如果您还有其他问题请求,请问我! 谢谢! Screenshot

+0

所有的细胞都有图像?你确定图像数组和indexPath.row的关系吗? – UlyssesR

+0

也许你需要计算图像高度与比例image.width/screen.width? –

+0

是的,这个数组是数据源数组,我用它来返回部分中的行。 –

非常感谢你们!与长宽比的东西呢:

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
     let image = comics[indexPath.row].image 
     let aspectRatioImg = image.size.height/image.size.width 

     return view.bounds.width * aspectRatioImg + 103 
    }