我想制作一个可滚动的图像列表,例如带有4列的instagram。我创建了一个包含图像视图http://prntscr.com/d15rnx的集合视图。但我得到了这个结果 - http://prntscr.com/d15tsq 代码 -
// MARK: - UICollectionViewDataSource protocol
// tell the collection view how many cells to make
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.items.count
}
// make a cell for each cell index path
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
// get a reference to our storyboard cell
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath as IndexPath) as! MyCollectionViewCell
// Use the outlet in our custom class to get a reference to the UILabel in the cell
cell.imageView.image = UIImage(named: "main/p\(self.items[indexPath.item].code)/main/main.jpg")
print("main_card_images/p\(self.items[indexPath.item].code)/main/main")
return cell
}
// MARK: - UICollectionViewDelegate protocol
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
// handle tap events
print("You selected cell #\(indexPath.item)!")
print(self.items[indexPath.item])
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let yourNextViewController = (segue.destination as! ViewControllerCard)
let indexPath = collectionView.indexPath(for: sender as! UICollectionViewCell)
yourNextViewController.mainCardImage = self.items[(indexPath?.item)!]
}
答案 0 :(得分:0)
确保已将单元格间距设置为0,然后您只需执行:
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
return(collectionView.bounds.size.width/4,collectionView.bounds.size.height/4)
}
这将调整所有单元格的大小,使其等于UICollectionView
宽度的1/4,从而在每行中创建4个单元格(高度值的1/4只是因为我喜欢这些类型的UI中的对称性)。如果单元格的数量似乎没有那么多,那就是因为项目间距没有设置为0.如果你想要项目间距,只需从上面函数中返回的宽度值中减去该值
<强>替代地强>
您可以实现自己的自定义流程布局,但上述解决方案要简单得多。
答案 1 :(得分:0)
我发现通过Interface Builder中的设置配置我的集合视图最简单。对于具有流布局的集合视图,这里是我用于插图的设置。我发现物品尺寸宽度:125.8和高度:125.8,以便在大多数设备上以纵向或横向显示最佳尺寸。
这是我的集合视图的样子。
您当然可以使用UICollectionViewDelegateFlowLayout以编程方式设置此项,或者通过子类化CollectionViewFlowLayout
建议使用Rikh