UIViewController 内的 UICollectionView 不允许滚动
UICollectionView inside UIViewController not allowing scroll
Edit1:我没有使用情节提要,所有内容都是以编程方式添加的
Edit2:更新代码片段
您好,我遇到了 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
}
}
嘿,你说的是你无法向上滚动并查看整个集合视图项目?
如果是这样,那么你还没有考虑到标签栏控制器的高度,所以你可以启用半透明,例如我有一个 git 回购协议,你可以检查并让我知道你是否卡在任何地方
Edit1:我没有使用情节提要,所有内容都是以编程方式添加的
Edit2:更新代码片段
您好,我遇到了 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
}
}
嘿,你说的是你无法向上滚动并查看整个集合视图项目?
如果是这样,那么你还没有考虑到标签栏控制器的高度,所以你可以启用半透明,例如我有一个 git 回购协议,你可以检查并让我知道你是否卡在任何地方