11

我已经在页眉区域实现了一个 MKMapView,我想将它完全展开到顶部,即使您将表格向下拖动到反弹区域- 类似于 Foursquare,请参见示例:

四方示例

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

默认标题

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

我正在使用评论中提到的 UIScrollView 委托,然后按如下方式调整地图视图框架的大小。

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

...但它的反应并不完全正确并且表现不佳。如何正确设置地图框的新尺寸?

4

4 回答 4

6

为表格视图实现滚动视图委托。由于它是滚动视图的子类,因此您可以使用滚动视图委托。实现scrollViewDidScroll委托,每当它向下滚动时,更改 headerview 的框架并确保 pin 始终位于屏幕的中心。

包含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
}
于 2012-11-12T00:51:13.443 回答
1

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

编辑: 我注意到 Foursquare 示例中的图钉位于地图中心。这意味着您可能应该使用UIScrollViewDelegatetodidScroll方法并在滚动期间动态更改地图的框架。您还应该在滚动时将地图置于图钉区域的中心。

于 2012-11-03T11:29:10.800 回答
0

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

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

https://github.com/danielbowden/DBParallaxMapTableView

于 2013-10-10T03:56:42.047 回答
0

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

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if (_tableView.contentOffset.y < 0) {
        _mapTopConstraint.constant = _tableView.contentOffset.y;
    }
}
于 2015-06-26T18:59:13.573 回答