如何使 UICollectionView 的高度可自动调整和滚动?
How to make UICollectionView's height autoresizable and scrollable?
我有一个 ViewController,它使用 2 个 CollectionViews(水平的像 insta 故事和垂直的(黑色的)) .我遇到了 Vertical CollectionView 不可调整大小的问题,因此,我无法向下滚动它以获取所有单元格。有什么方法可以使整个页面可滚动以正确显示我的单元格,或者我必须为此使用 TableViewController?谢谢
这是一个代码
private var postsCollectionView: UICollectionView?
override func viewDidLoad() {
super.viewDidLoad()
...
initializePosts()
}
func initializePosts() {
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .vertical
layout.itemSize = CGSize(width: 380, height: 285)
layout.sectionInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
layout.minimumLineSpacing = 30
postsCollectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
postsCollectionView?.register(PostCell.self, forCellWithReuseIdentifier: PostCell.identifier)
postsCollectionView?.showsHorizontalScrollIndicator = false
postsCollectionView?.showsVerticalScrollIndicator = false
postsCollectionView?.contentInsetAdjustmentBehavior = .always
postsCollectionView?.delegate = self
postsCollectionView?.dataSource = self
postsCollectionView?.backgroundColor = .blue
guard let postsCollections = postsCollectionView else {
return
}
view.addSubview(postsCollections)
}
...
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
postsCollectionView?.frame = CGRect(x: 0, y: 330, width: view.frame.size.width, height: view.frame.size.height).integral
}
您可以使用多种方法。
首先,将postsCollectionView添加到view controller的top view,附加view的edges和constraints,然后注册section header (UICollectionReusableView) in postsCollection视图,并在header.
部分放一个类似于Instagram的横向collection视图
其次,在view controller的top view中添加了一个vertical scroll view,并应用了view的edges和constraints,在vertical中添加了一个类似Instagram的水平collection view滚动视图,并添加了 postsCollectionView。这时候Collection View应该是动态创建的,使其自身大小和content的大小一样,参考下面link.
我有一个 ViewController,它使用 2 个 CollectionViews(水平的像 insta 故事和垂直的(黑色的)) .我遇到了 Vertical CollectionView 不可调整大小的问题,因此,我无法向下滚动它以获取所有单元格。有什么方法可以使整个页面可滚动以正确显示我的单元格,或者我必须为此使用 TableViewController?谢谢
这是一个代码
private var postsCollectionView: UICollectionView?
override func viewDidLoad() {
super.viewDidLoad()
...
initializePosts()
}
func initializePosts() {
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .vertical
layout.itemSize = CGSize(width: 380, height: 285)
layout.sectionInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
layout.minimumLineSpacing = 30
postsCollectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
postsCollectionView?.register(PostCell.self, forCellWithReuseIdentifier: PostCell.identifier)
postsCollectionView?.showsHorizontalScrollIndicator = false
postsCollectionView?.showsVerticalScrollIndicator = false
postsCollectionView?.contentInsetAdjustmentBehavior = .always
postsCollectionView?.delegate = self
postsCollectionView?.dataSource = self
postsCollectionView?.backgroundColor = .blue
guard let postsCollections = postsCollectionView else {
return
}
view.addSubview(postsCollections)
}
...
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
postsCollectionView?.frame = CGRect(x: 0, y: 330, width: view.frame.size.width, height: view.frame.size.height).integral
}
您可以使用多种方法。
首先,将postsCollectionView添加到view controller的top view,附加view的edges和constraints,然后注册section header (UICollectionReusableView) in postsCollection视图,并在header.
部分放一个类似于Instagram的横向collection视图其次,在view controller的top view中添加了一个vertical scroll view,并应用了view的edges和constraints,在vertical中添加了一个类似Instagram的水平collection view滚动视图,并添加了 postsCollectionView。这时候Collection View应该是动态创建的,使其自身大小和content的大小一样,参考下面link.