【发布时间】:2015-11-24 02:22:55
【问题描述】:
我有具有 UITableViewAutomaticDimension 的自定义 TableViewCell。当我将图像加载到单元格中时,它几乎总是对于图像来说太高了,我最终会在图像上方和下方出现大白条。我正在尝试做的是将 UIImageView 调整为与图像相同的大小,但没有任何效果。
我也尝试创建一个新的 UIImageView 并进行设置,但 UIImageView.init(frame: CGRectMake(...) ) 出于某种原因返回 nil。我的 Google-fu 在这方面让我失望了。
我用于(尝试)调整 imageView 和父单元格大小的代码:(请注意,i 是我的新图像,cell.postImage 是 IBOutlet 类型的 UIImageView!)
let oFrame = cell.postImage.frame
let width = oFrame.width
let height = (i.size.height / i.size.width) * width
cell.postImage.frame = CGRectMake(oFrame.origin.x, oFrame.origin.y, width, height)
cell.postImage.contentMode = .ScaleAspectFit
cell.postImage.image = i
cell.setNeedsUpdateConstraints()
cell.setNeedsLayout()
cell.layoutIfNeeded()
【问题讨论】:
-
你对 postImage 有什么限制?一般来说,使用自动布局时不建议设置框架。相反,最好自己设置约束。
-
@beyowulf 我有与my question from last week 相同的限制 - 您可以在我的屏幕截图底部观察图像顶部边缘上方的条形。基本上它被限制在超级视图的顶部和内容标签的底部。
-
什么决定了单元格的高度,padding+图片高度+padding+标签高度+padding?
-
@beyowulf 是的,这是正确的。如果没有图像,UIImageView 应该占用 0 空间。
-
它有固定的纵横比还是固定的宽度?
标签: ios swift uitableview uiimageview