我想在单元格中显示图像,因为我需要先下载它,所以我想显示(为了简化问题)应该显示具有相同宽度和高度的黑色视图。
因为我想将图像拉伸到与单元格宽度相同的宽度,所以我只需要宽高比来设置高度,这在调用cellForRowAt
时在我的代码中提供。
我决定在下载图像之前实现“黑色视图”我只需要一个黑色背景的UIImageView,并在调用cellForRowAt
时调整它的大小。但问题出在这里,因为使用类似问题的代码并不适合我。
我在cellForRowAt
方法中尝试过类似的内容:
var frame cell.imageView.frame
frame.size.height = CGFloat(aspectRatio) * frame.size.width
cell.imageView.frame = frame
修改
因此我想要像facebook这样的东西,我们的照片宽度与细胞和高度相同,与宽高比相对应。为简单起见,cell只能有UIImageView。
答案 0 :(得分:0)
由于您正在使用自动布局,因此您应该在故事板中设置两件事:
UIImageView
的宽度设置为单元格的整个宽度UIImageView
的宽高比设置为1:1 - 这表示高度始终与宽度相同。如果您使用UITableView
的自动尺寸来获取单元格高度,那么这应该就是您所需要的;没有任何代码,其他一切都正常。
如果您没有使用自动细胞高度功能,那么如果它们全部相同,则将细胞高度设置为self.tableView.rowHeight = self.tableView.bounds.size.width
一次,或者,如果细胞可以是不同的高度,则设置细胞高度:
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if (<indexPath IS IMAGE ROW>)
return tableView.bounds.size.width
return <default height>
}
在我编写<indexPath IS IMAGE ROW>
的地方,您应该用您需要检测的任何条件替换该特定单元格是否为图像类型。
此外,正如Rikh所指出的那样,在我编写<default height>
的地方,您应该将其替换为不图像类型的单元格的高度。
当然,你的桌子可能有更复杂的设计;这只是涵盖了你所询问的案例。
答案 1 :(得分:-1)
这是我的解决方案
imageView.contentMode = UIViewContentModeCenter;
if (imageView.bounds.size.width > ((UIImage*)imagesArray[i]).size.width && imageView.bounds.size.height > ((UIImage*)imagesArray[i]).size.height) {
imageView.contentMode = UIViewContentMode.ScaleAspectFit;
}