Помимо того, что ответил Джош, что вы можете попробовать это:
Что вы можете сделать, это сделать UIImageView
«уменьшение высоты s на основе количества прокрутки, пока UIImageView
» высота s равен 0, а затем начать прокрутку иначе заставить contentOffSet
из UITableView
всегда оставаться 0. это, как говорится, вот как это сделать:
Марка перечисление для отслеживания различных состояний UIImageView
, как:
enum Layout {
case ImageExpanding,
case ImageDefaultHeight,
case ImageDiminishing,
case ImageNotVisible
}
В своем раскадровке добавьте верхнее, ведущее и конечное ограничение в супервизор для вашего UIImageView
и фиксированное ограничение по высоте позволяет сказать 200 (не беспокойтесь, вы измените это позже). К вашему UITableView
добавьте главное, конечное и нижнее ограничение в супервизор и верхнюю часть UIImageView
. Теперь перетащите устную розетку для высоты UIImageView
в UIViewController
.
В вашем viewDidLoad
установить heightConstraint
быть 1/2 от общей высоты экрана и установить состояние перечислимого первоначально быть ImageDefaultHeight
Теперь в вашем scrollViewDidScroll
вы должны проверить направление прокрутки и на основе что при проверке текущего состояния изображения увеличивайте или уменьшайте высоту Конкретизация на основе количества, которое пользователь прокручивает и всегда проверяет:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if(/*up*/){
//just telling you about this if condition as this will ensure that
//if your table view is large and if tableview isn't at the top,
//the image shouldn't expand
if layout == .ImageNotVisible{
if scrollView.contentOffset.y <= 0 {
//start expanding once you reach top of tableview
layout = .ImageExpanding;
}
}
//keep track of other enum states and update your uiimageview
//appropriately after calculating the user scroll amount
//until the height reaches your initialDefaultHeight and
//then do nothing. You will have to figure out the code
//for this on your own
}else if(/*down*/){
//make image smaller
}
//dont let table view scroll until image height is 0 when use is scrolling down
if layout != ImageNotVisible{
scrollView.contentOffset = CGPoint(x: 0, y: 0)
}
}
спасибо! Но как я могу получить только заголовок прозрачным? Я создал новый View, установил альфа-значение 0.0 и фон UIColor.clear. Границы: x: 0, y: 0, ширина: ширина экрана, высота: высота экрана/2. Затем я устанавливаю его с помощью tableView.tableHeaderView = headerView. Я прав? – user6586661