如何在 Scroll 上增加 UICollectionView 的大小
How to increase size of UICollectionView on Scroll
我想在 Scroll 上增加 collectionView 的大小。这叫做视差影响。
我有 3 个 classes 命名为
1)class PhotoGalleryViewController
' 与故事板。
PhotoGalleryViewController
包含 collectionView
和一个包含 imageview
的单元格。
2) class ListingDetailContentViewController
' 没有故事板
3) class ListingDetailViewController
' 带故事板。
ListingDetailViewController
将 ListingDetailContentViewController
附加为 child
。
contentViewController = ListingDetailContentViewController(hideComparable: comparableIsHidden)
contentViewController.view.translatesAutoresizingMaskIntoConstraints = false
contentViewController.listingDetailViewController = self
addChild(contentViewController)
view.addSubview(contentViewController.view)
view.sendSubviewToBack(contentViewController.view)
ListingDetailContentViewController
正在使用库 AloeStackViewController
附加 photoGalleryViewController
。 AloeStackViewController
是 UIScrollView
所以这就是为什么我在 ListingDetailContentViewController
中做了它的代表
class ListingDetailContentViewController: AloeStackViewController, PhotoGalleryViewControllerDelegate, UIScrollViewDelegate {
// MARK: - Private functions
private func setupView(ad: Ad) {
// Display photos
if let photos = ad.photos {
photoGalleryViewController = UIStoryboard(name: "Listing", bundle: nil).instantiateViewController(withIdentifier: "PhotoGalleryViewController") as? PhotoGalleryViewController
let photoView = photoGalleryViewController.view!
stackView.addRow(photoView)
stackView.setInset(forRow: photoView, inset: .zero)
photoGalleryViewController.photos = photos
photoGalleryViewController.ad = ad
photoGalleryViewController.delegate = self
actualFrame = photoGalleryViewController.collectionView.frame.height
}
// Some other stuff
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
// The link i applied here is
let offsetY = scrollView.contentOffset.y
if offsetY < 0 {
photoGalleryViewController.collectionView.frame.size.height += actualFrame - offsetY
photoGalleryViewController.view.frame.size.height += actualFrame - offsetY
self.loadViewIfNeeded()
} else {
photoGalleryViewController.collectionView.frame.size.height = actualFrame
photoGalleryViewController.view.frame.size.height = actualFrame
self.loadViewIfNeeded()
}
}
}
我试过这个 但对我不起作用。
我的图像在屏幕顶部。和其他东西在下面。
每当用户向下滚动时。图像应该增加。
请帮我解决这个问题。
更新:
回答:
我是在名为 ParallaxHeader 的 library 的帮助下完成的。我只是使用 Pod 添加这个库并按照库中给出的教程进行操作。
经过一番努力,我实现了问题中提出的目标。
我是在名为 ParallaxHeader
的 library 的帮助下完成的。
我只是使用 Pod
添加此 library
并按照库中给出的教程进行操作。
我想在 Scroll 上增加 collectionView 的大小。这叫做视差影响。
我有 3 个 classes 命名为
1)class PhotoGalleryViewController
' 与故事板。
PhotoGalleryViewController
包含 collectionView
和一个包含 imageview
的单元格。
2) class ListingDetailContentViewController
' 没有故事板
3) class ListingDetailViewController
' 带故事板。
ListingDetailViewController
将 ListingDetailContentViewController
附加为 child
。
contentViewController = ListingDetailContentViewController(hideComparable: comparableIsHidden)
contentViewController.view.translatesAutoresizingMaskIntoConstraints = false
contentViewController.listingDetailViewController = self
addChild(contentViewController)
view.addSubview(contentViewController.view)
view.sendSubviewToBack(contentViewController.view)
ListingDetailContentViewController
正在使用库 AloeStackViewController
附加 photoGalleryViewController
。 AloeStackViewController
是 UIScrollView
所以这就是为什么我在 ListingDetailContentViewController
class ListingDetailContentViewController: AloeStackViewController, PhotoGalleryViewControllerDelegate, UIScrollViewDelegate {
// MARK: - Private functions
private func setupView(ad: Ad) {
// Display photos
if let photos = ad.photos {
photoGalleryViewController = UIStoryboard(name: "Listing", bundle: nil).instantiateViewController(withIdentifier: "PhotoGalleryViewController") as? PhotoGalleryViewController
let photoView = photoGalleryViewController.view!
stackView.addRow(photoView)
stackView.setInset(forRow: photoView, inset: .zero)
photoGalleryViewController.photos = photos
photoGalleryViewController.ad = ad
photoGalleryViewController.delegate = self
actualFrame = photoGalleryViewController.collectionView.frame.height
}
// Some other stuff
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
// The link i applied here is
let offsetY = scrollView.contentOffset.y
if offsetY < 0 {
photoGalleryViewController.collectionView.frame.size.height += actualFrame - offsetY
photoGalleryViewController.view.frame.size.height += actualFrame - offsetY
self.loadViewIfNeeded()
} else {
photoGalleryViewController.collectionView.frame.size.height = actualFrame
photoGalleryViewController.view.frame.size.height = actualFrame
self.loadViewIfNeeded()
}
}
}
我试过这个
更新: 回答: 我是在名为 ParallaxHeader 的 library 的帮助下完成的。我只是使用 Pod 添加这个库并按照库中给出的教程进行操作。
经过一番努力,我实现了问题中提出的目标。
我是在名为 ParallaxHeader
的 library 的帮助下完成的。
我只是使用 Pod
添加此 library
并按照库中给出的教程进行操作。