Я хочу увеличить размер collectionView на Scroll.Это называется эффектом параллакса.
У меня есть 3 класса с именем 1) класс PhotoGalleryViewController
'с раскадровкой.PhotoGalleryViewController
содержит collectionView
и ячейку с imageview
.2) класс ListingDetailContentViewController
'без раскадровки 3) класс 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
добавляет photoGalleryViewController
с использованием библиотеки AloeStackViewController
.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 https://stackoverflow.com/questions/33481928/imageview-scaling-when-scrolling-down
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()
}
}
}
Я попробовал это help , но у меня не получилось.Мое изображение вверху экрана.и другие вещи ниже.Когда пользователь прокручивает страницу вниз.Изображение должно быть увеличено.Пожалуйста, помогите мне решить эту проблему.
Обновление: Ответ: Я сделал это с помощью библиотеки под названием ParallaxHeader.Я просто добавляю эту библиотеку с помощью Pod и следую инструкциям, приведенным в библиотеке.