Вышеуказанные решения фактически не реально обеспечить точное выполнение, как это в Tweetbot или Tinder [масштабирование изображения профиля цели].
Я также должен был решить эту проблему и самое совершенное внедрение я нашел использовать 2 основные элементы:
1) Tableview, который имеет вставку содержимого
2) ImageView на вершине этой точки зрения таблицы, которая имеет выход для ограничения верхнего и верхнего ограничений и который находится поверх этого пустого пространства, предоставляемого вставки содержимого таблицы.
Итак, сначала обязательно установите вставки для таблицыView и начального ограничения высоты для изображения. Например, вы можете сделать это в viewDidLoad.
imageViewHeightConstraint.constant = view.frame.height * 0.3
tableView.contentInset = UIEdgeInsets(top: view.frame.height * 0.3, left: 0, bottom: 0, right: 0)
Затем просто прослушайте метод делегата scrollViewDidScroll и соответствующим образом измените ограничения.
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let contentOffset = scrollView.contentOffset.y
if -contentOffset >= view.frame.height * 0.3 {
//reset the top constraint
topConstraint.constant = 0
//make the imageview bigger by the additional content offset value
imageViewHeightConstraint.constant = -contentOffset
} else {
topConstraint.constant = -(view.frame.height * 0.3 + contentOffset)
}
}
Возможно, вам потребуется обращать знаки в соответствии с вашими ограничениями. И, вероятно, есть способ оптимизировать и не изменять ограничения, которые часто, но вы получаете эту идею.
Пожалуйста, обратите внимание, что вам нужно:
imageView.contentMode = .scaleAspectFill
layer.masksToBounds = true
В противном случае изображение будет нарисована поверх ваших первых клеток Tableview [в зависимости от размера изображения он может прийти, чтобы покрыть по всей табличном], потому что выводится за пределы «границ».
@Nic Hubbard Я стараюсь получить этот эффект в UIScrollView. Изображение не прилипает к вершине. Вы можете мне помочь. ? – Priyatham51
@ Priyatham51 - Прошло уже больше года с тех пор, как я это сделал, поэтому я больше не помню его. –
@NicHubbard Я достиг этого с ограничениями автоматической компоновки, описанными здесь (http://blog.domesticcat.com.au/ios/2014/03/19/creating-parallax-effect-on-uiscrollview-using-simple-constraints /). Спасибо за ваш ответ. :) – Priyatham51