Развернуть заголовок заголовка UITableView для области отказов при вытягивании
Я реализовал MKMapView в области заголовка, и я бы хотел его полностью расширить до вершины, даже когда вы перетаскиваете таблицу в область отказов. Подобно Foursquare, см. пример:
![Foursquare Example]()
Моя текущая реализация заголовка по умолчанию (область серого отражения при перетаскивании вниз)
![Default Header]()
Как сделать отображение карты в заголовке адаптированным к доступному пространству заголовка сверху при перетаскивании таблицы?
Я использую делегат UIScrollView, как указано в комментариях, и затем изменяю размер рамки представления карты, как следует.
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGRect frame = worldmap.frame;
frame.size.height -= scrollView.contentOffset.y;
worldmap.frame = frame;
}
... но он не совсем реагирует правильно и работает плохо. Как правильно установить новый размер кадра карты?
Ответы
Ответ 1
Внедрите делегат scrollview для представления таблицы. Поскольку это подкласс scrollview, вы можете использовать делегаты scrollview. Внесите делегат scrollViewDidScroll
и всякий раз, когда он прокручивается вниз, измените рамку headerview и убедитесь, что вывод всегда находится в центре экрана.
Включить UIScrollViewDelegate
в .h файл и реализовать,
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
//set the frame of MKMapView based on scrollView.contentOffset and make sure the pin is at center of the map view
}
Ответ 2
Сделайте кадр headerView очень длинным, а затем центрируйте карту в области, которая позволяет вам просматривать интересную область в нижней части карты.
Edit:
Я заметил, что булавка в примере Foursquare находится в центре карты. Это означает, что вы, вероятно, должны использовать UIScrollViewDelegate
для использования метода didScroll
и динамически изменять кадр карты во время прокрутки. Вы также должны центрировать карту в области контактов при прокрутке.
Ответ 3
Старый вопрос, но я реализовал это в проекте.
Заголовок TableView является MapView и в качестве дополнительного бонуса можно также перемещать и масштабировать карту.
https://github.com/danielbowden/DBParallaxMapTableView
Ответ 4
Я помещаю содержимое заголовка в другое представление, которое я ограничиваю с каждой стороны заголовка. Затем, используя IBOutlet для верхнего ограничения, я просто устанавливаю его в contentOffset.
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if (_tableView.contentOffset.y < 0) {
_mapTopConstraint.constant = _tableView.contentOffset.y;
}
}