拉下时将UITableView标题视图展开到弹起区域

我已经在头部区域中实现了一个MKMapView,即使将表格拖放到反弹区域 ,我也想将其完全展开到顶部 – 类似于Foursquare,请参阅示例:

Foursquare示例

我当前的默认头部实现(灰色反弹区域时,向下拖动)

默认标题

如何使表头中的地图视图在向下拖动表格时适应顶部的可用标题空间?

我正在使用注释中提到的UIScrollView委托,然后调整地图视图框架的大小。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { CGRect frame = worldmap.frame; frame.size.height -= scrollView.contentOffset.y; worldmap.frame = frame; } 

…但是这个反应并不正确,performance不佳。 如何正确设置地图框架的新大小?

实现表视图的scrollview委托。 由于它是scrollview的子类,所以可以使用scrollview委托。 实现scrollViewDidScroll委托,当它向下滚动时,改变headerview的框架,并确保引脚总是在屏幕的中心。

在.h文件中包含UIScrollViewDelegate并执行,

 - (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 } 

使您的headerView框架非常长,然后将地图放置在允许您查看地图底部的有趣区域的区域中。

编辑:我已经注意到,在Foursquare示例中的引脚停留在地图的中心。 这意味着您可能应该使用UIScrollViewDelegate来使用didScroll方法,并在滚动过程中dynamic地更改地图的框架。 滚动时,您还应该将地图居中放置在地图的区域中。

老问题,但我已经在一个项目中实现了这一点。

TableView标题是一个MapView,作为额外的奖励,地图也可以被移动和缩放。

https://github.com/danielbowden/DBParallaxMapTableView

我将标题视图的内容放在另一个视图中,我将其限制在标题视图的每一侧。 然后使用一个IBOutlet的顶部约束,我只是把它设置为contentOffset。

 - (void)scrollViewDidScroll:(UIScrollView *)scrollView { if (_tableView.contentOffset.y < 0) { _mapTopConstraint.constant = _tableView.contentOffset.y; } }