我是iOS和Swift的新手,我正在尝试首次创建UICollectionView
。
运行我的作品时,有些事情不太正确。这是我的故事板中的样子:
但是当我跑步时:
顶部的灰色区域变得比以前更长,并且单元的底部似乎被剪切了。我只写了几行代码以使单元格的高度等于集合视图的高度。
let height = collectionView.frame.height
cell.frame.size.height = height
return cell
有什么建议吗?
答案 0 :(得分:1)
请使用collectionViewLayout
给出商品的尺寸,
class YourController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout
和
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let height = collectionView.frame.height
let width = UIScreen.main.bounds.width / 3
let size = CGSize(width: width, height: height)
return size
}
答案 1 :(得分:1)
要更改集合视图中的高度,请不要更改单元格框架的高度。集合视图还有另一个委托可以设置单元格的高度和宽度。
extension ViewControll : UICollectionViewDelegateFlowLayout {
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
{
return CGSize(width: anyWidth, height: collectionView.frame.size.height)
}
}
在这里,anyWidth
表示您放置的宽度。由你决定
答案 2 :(得分:1)
您可以从情节提要或代码中进行更改。如图所示,我已经从情节提要中完成了。
并在您的视图控制器中编写此方法,以为项目提供尺寸。为此,您需要在视图控制器中继承UICollectionViewDelegateFlowLayout
方法。
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let size = collectionView.frame.width / 3
return CGSize(width: size - 20, height: size - 20 )
}
注意:这仅是示例。您可以设置收藏夹视图单元格框架。
答案 3 :(得分:1)
Swift 4代码在这里
1)取消选中属性检查器中行高的自动字段。
2)然后设置委托函子
extension ViewController : UICollectionViewDelegateFlowLayout {
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
var width = CGFloat(80) //change "80" with your cell width
return CGSize(width: width ,height : self.collectionView.frame.height)
}
}