首页 > 解决方案 > 将 CollectionView 设置为横幅

问题描述

我必须在我的视图控制器中收集视图。一个是显示图像,另一个是显示票务详细信息。这是示例图像。

但我无法设置适当的约束。这就是我对代码所做的。

 let numberOfCells = 9
    let kCellHeight : CGFloat = 104
    let kLineSpacing : CGFloat = 2
    let kInset : CGFloat = 10

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        if collectionView == clnView {
            return CGSize.init(width: width, height: height)
        }else {
            return CGSize(width: (UIScreen.main.bounds.width - 2*kInset - kLineSpacing), height: kCellHeight)
        }
    }
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
        var size = CGFloat()
        if collectionView == clnView {
            size = kLineSpacing
        }
        return size
    }
 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
        var Insect = UIEdgeInsets()
        if collectionView == clnView {
            Insect = UIEdgeInsets(top: kInset, left: kInset, bottom: kInset, right: kInset)
        }
        return Insect
    }

但它没有正确显示。看

iPhone 5S

iPhone XR

请解释正确的方法。谢谢

标签: swiftuicollectionviewautolayoutconstraints

解决方案


您的代码只是定义了项目在集合视图中的布局方式。

约束应该告诉您父视图集合视图的放置位置,以及宽度和高度。

您必须学习自动布局并在情节提要或 xib 中逐步完成视图。使用适当的 Y 约束,它应该按预期工作。如果您将 collectionview + 其他内容放在滚动视图中,请遵循此答案


推荐阅读