使用scrollViewDidScroll调整视图大小

时间:2014-01-24 18:35:52

标签: ios uiscrollview

我遇到UIScrollView问题。

UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 40,320,500)];
MKMapView *mapView = [[MKMapView alloc] initWithFrame:CGRectMake(0, 40, 320, 120)];

我覆盖了scrollView

-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
   [mapView setFrame:CGRectMake(0, 40, 320, 120 - scrollView.contentOffset.y)];
}

一切正常但滚动和调整mapView时不顺畅。有更好的解决方案吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

scrollViewDidScroll:方法中调整视图大小是一项繁重的工作。此外,scrollViewDidScroll:并不总是被调用,至少不是每次调整偏移量。

更好的方法是,设置MKMapView一次的框架,其大小足以覆盖scrollView的可见部分。您添加上方 mapView

的位置列表

然后在scrollViewDidScroll:中,设置center的{​​{1}},使其看起来好像mapView正在调整大小。在我的情况下,我做的是在偏移改变时更改地图的mapView。类似的东西:

center

DELTA这里是你必须通过点击尝试得到的值,以保持地图的中心(我想是用户的位置)在列表的顶部边框和scrollView的顶部之间。

编辑:在我的情况下,DELTA是偏移量变化的一半(尊重BOTH负值和正值)。