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

时间:2012-11-03 10:58:31

标签: objective-c ios 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;  
} 

......但是它没有做出正确反应而表现不佳。如何正确设置地图框的新尺寸?

4 个答案:

答案 0 :(得分:6)

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

在.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
}

答案 1 :(得分:1)

将headerView框架设置得很长,然后将地图置于允许您在地图底部查看感兴趣区域的区域中心。

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

答案 2 :(得分:0)

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

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

https://github.com/danielbowden/DBParallaxMapTableView

答案 3 :(得分:0)

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

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