我遇到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时不顺畅。有更好的解决方案吗?
谢谢。
答案 0 :(得分:1)
在scrollViewDidScroll:
方法中调整视图大小是一项繁重的工作。此外,scrollViewDidScroll:
并不总是被调用,至少不是每次调整偏移量。
更好的方法是,设置MKMapView
一次的框架,其大小足以覆盖scrollView
的可见部分。您添加上方 mapView
。
然后在scrollViewDidScroll:
中,设置center
的{{1}},使其看起来好像mapView
正在调整大小。在我的情况下,我做的是在偏移改变时更改地图的mapView
。类似的东西:
center
DELTA这里是你必须通过点击尝试得到的值,以保持地图的中心(我想是用户的位置)在列表的顶部边框和scrollView的顶部之间。
编辑:在我的情况下,DELTA是偏移量变化的一半(尊重BOTH负值和正值)。