【发布时间】:2018-12-10 08:12:21
【问题描述】:
Edit1:我没有使用情节提要,所有内容都是以编程方式添加的
Edit2:更新的代码 sn-p
您好,我遇到以下 UICollectionView 问题
- 无论您做什么,CollectionView 都不允许您滚动。
- 有时单元格甚至会完全消失,留下白色背景的 CollectionView。
当您尝试向上滚动查看不可见的单元格时会出现问题。
- 我创建了一个具有不同类型单元格的 CollectionView。
- CollectionView 嵌套在 ImageView 下方的 ViewController 中。
- 添加了约束,它们工作得很好。
如何让它可滚动?
代表问题的 GIF
ViewController.swift
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.navigationItem.title = "Featured"
self.view.backgroundColor = UIColor.white
// Add UImage carousel
let carousel: UIImageView = {
let imageView = UIImageView()
let image = UIImage()
imageView.backgroundColor = UIColor.purple
return imageView
}()
self.view.addSubview(carousel)
carousel.translatesAutoresizingMaskIntoConstraints = false
// Add CollectionView
let featuredControllerLayout = UICollectionViewFlowLayout()
// Add CollectionViewController
featuredControllerLayout.scrollDirection = .vertical
let featuredController = FeaturedCollectionViewController(collectionViewLayout: featuredControllerLayout)
guard let featuredView = featuredController.collectionView else { return }
self.view.addSubview(featuredView)
featuredView.translatesAutoresizingMaskIntoConstraints = false
// Setup Constraints
if #available(iOS 11.0, *) {
let guide = self.view.safeAreaLayoutGuide
let guideSize = guide.layoutFrame.size
carousel.trailingAnchor.constraint(equalTo: guide.trailingAnchor).isActive = true
carousel.leadingAnchor.constraint(equalTo: guide.leadingAnchor).isActive = true
carousel.topAnchor.constraint(equalTo: guide.topAnchor).isActive = true
carousel.frame.size.height = guideSize.width/2
carousel.heightAnchor.constraint(equalToConstant: carousel.frame.size.height).isActive = true
featuredView.trailingAnchor.constraint(equalTo: guide.trailingAnchor).isActive = true
featuredView.leadingAnchor.constraint(equalTo: guide.leadingAnchor).isActive = true
featuredView.topAnchor.constraint(equalTo: carousel.bottomAnchor).isActive = true
featuredView.bottomAnchor.constraint(equalTo: guide.bottomAnchor).isActive = true
}
}
【问题讨论】:
-
您希望看到什么?这只是看起来数据已经用完了。绿色背景是什么来的?
-
当您向上滚动并将手指从屏幕上移开时,collectionView 会弹回。 “推荐项目”显示一半。绿色背景是我添加的一个空单元格。
-
看起来你有冲突的约束。您的
v:|view|约束将与您的安全区域插入指南约束冲突。删除其中一个。 -
您应该会看到一条消息,告诉您存在这些冲突。
-
获取消息和删除代码均无效。我怀疑它与collectionViewLayout 有关。我更新了代码 sn-p。
标签: ios swift uiviewcontroller uicollectionview collectionview