如何在所有设备中使用 swift4 在 CollectionView 中显示三列

Posted

技术标签:

【中文标题】如何在所有设备中使用 swift4 在 CollectionView 中显示三列【英文标题】:How to show three columns in a CollectionView using swift4 in all devices 【发布时间】:2018-04-12 11:54:59 【问题描述】:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize 
    
    
    if collectionView == self.collectionViewVideo 

        var collectionViewSize = collectionViewVideo.frame.size
        collectionViewSize.width = collectionViewSize.width/3.0 //Display Three elements in a row.
        return collectionViewSize
     else 
        return CGSize(width: 60, height: 60)
    
    
    

【问题讨论】:

【参考方案1】:

您还需要考虑空间。 Space 是您的集合视图项目空间

以下是代码有两个单元格和 20 个空格。 (我没有写你需要的代码你应该自己做)

extension YourViewController : UICollectionViewDelegateFlowLayout 
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat 
        return 20
    

    //--------------------------------------------------------------------------------

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat 
        return 20;
    

    //--------------------------------------------------------------------------------

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize 
        return CGSize(width: ( self.collectionView.frame.size.width - 60 ) / 2,height:( self.collectionView.frame.size.width - 60 ) / 2)
    

    //--------------------------------------------------------------------------------

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets 
       return UIEdgeInsetsMake(0, 20, 20, 20)
    

这里60 表示SPACE 20 CELL SPACE 20 CELL SPACE 20

【讨论】:

什么是 insetForSectionAt 先生? inset 是单元格开始的位置。有了它,您可以将左侧空间应用于您的第一个单元格(20 像素),将右侧空间应用于您的右侧单元格(20 像素) @GoribDeveloper 尝试使用该部分并尝试理解它。所以你下次不需要提出问题或需要来自互联网的帮助 @GoribDeveloper 如果我的回答有帮助,如果您不介意,请将其标记为已接受 :)

以上是关于如何在所有设备中使用 swift4 在 CollectionView 中显示三列的主要内容,如果未能解决你的问题,请参考以下文章

【iOS】Swift4.0 横竖屏监测、动态切换

在 Swift4 中取消选中 TableView 所有 TableView 选择

多点连接 - 如何查看找到的设备

如何在 Swift 4 中修改 fileManager url 以指向另一个目录

如何在 swift4 中使用 Rxalamofire 发送 URL 请求

在 iOS 12 中检查设备是不是连接到 ***