gpt4 book ai didi

swift - UICollectionView 行为与 Subview 不同

转载 作者:行者123 更新时间:2023-11-30 13:17:59 26 4
gpt4 key购买 nike

我在另一个 Controller 中添加了 UICollectionView 作为 subview 。我为它设置了框架,UICollectionView 流是水平的。我只需要显示 1 行项目并水平滚动。但我垂直得到几行。我尝试了几种不同的方法,但对我没有帮助。我搜索了相关信息,但这些方法也对我没有帮助。我该如何修复它?

我的代码

override func viewDidLoad() {
super.viewDidLoad()
addUIElements()
}

// MARK: - UI functions

private func addUIElements() {
view.addSubview(headerView)

let lifelineController = StoryboardManager.lifeLineStoryboard.instantiateViewControllerWithIdentifier("LifeLineCollectionViewController") as! LifeLineCollectionViewController
addChildViewController(lifelineController)
lifelineController.view.frame = CGRect(x: 0, y: headerView.frame.height, width: headerView.frame.width, height: 100)
view.addSubview(lifelineController.view)
lifelineController.didMoveToParentViewController(self)
}

布局代码

    extension LifeLineCollectionViewController: UICollectionViewDelegateFlowLayout {

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
let value = 50
return CGSize(width: value, height: value)
}

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat {
return 8
}

// func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
// return CGSize(width: collectionView.frame.width, height: 376)
// }

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets {
let top: CGFloat = 48
let cornerValue: CGFloat = 8
let bottom: CGFloat = 40
return UIEdgeInsets(top: top, left: cornerValue, bottom: bottom, right: cornerValue)
}
}

我的结果是 enter image description here

我在 UICollectionView 的 viewDidAppear 中打印了它的框架,得到了完全不同的结果 508 高度,但我将高度设置为 136。

最佳答案

我在 SnapKit 的帮助下解决了这个问题

    private func addUIElements() {
view.addSubview(headerView)

let lifelineController = StoryboardManager.lifeLineStoryboard.instantiateViewControllerWithIdentifier("LifeLineCollectionViewController") as! LifeLineCollectionViewController
addChildViewController(lifelineController)
view.addSubview(lifelineController.view)
lifelineController.view.snp_makeConstraints { (make) in
make.width.equalTo(headerView.frame.width)
make.height.equalTo(136)
make.centerX.equalTo(view.snp_centerX)
make.top.equalTo(headerView.snp_bottom)
}
lifelineController.didMoveToParentViewController(self)
}

关于swift - UICollectionView 行为与 Subview 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38037201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com