我想显示一个流动的Items列表。项目图像的宽度应该是屏幕的宽度,高度应该是图像不会拉伸或缩小。
项目图片下方应该是项目的名称和拥有该项目的用户的用户名。
我完成了大部分工作。唯一的问题是collectionView卡的高度设置(非动态)。因此,图像通常要么溢出卡片,要么没有填满所有卡片的高度,并且有空格。
是否可以通过某种方式更改卡的高度以取决于图像的高度?
这是我的itemCellView,名为" CollViewCell":
import UIKit
import AlamofireImage
class CollViewCell: UICollectionViewCell {
@IBOutlet weak var imgCell: UIImageView!
@IBOutlet weak var labelCell: UILabel!
@IBOutlet weak var labelUserNameCell: UILabel!
}
以下是与Collection
有关的Viewcontroller代码...
@IBOutlet weak var collectionView: UICollectionView!
override func viewDidLoad() {
super.viewDidLoad()
self.viewModel.getItems(self.viewModel.getCurrentUser()) { items in
self.collectionView.reloadData()
}
}
...
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell: CollViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! CollViewCell
cell.labelCell.text = self.viewModel.tableDict[indexPath.row]![0]
let imageUrl = NSURL(string: self.viewModel.tableDict[indexPath.row]![1])
cell.imgCell.af_setImageWithURL(imageUrl!, placeholderImage: nil, filter: nil, imageTransition: .CrossDissolve(0.2))
cell.labelUserNameCell.text = self.viewModel.tableDict[indexPath.row]![2]
return cell
}
...
故事板上的ViewMode设置为Aspect Fill,语义从左到右
答案 0 :(得分:0)
只要您能够计算图像高度,就可以尝试使用estimatedItemSize
UICollectionViewFlowLayout
及其委托函数collectionView:layout:sizeForItemAtIndexPath:
的组合。
告诉您的集合视图使用流布局并返回estimatedItemSize
的平均单元格大小。然后,在collectionView:layout:sizeForItemAtIndexPath:
中,您将使用计算的图像大小来确定集合视图项的实际大小。内部的UIImageView
应该利用autolayout来填补增加的大小。