2010-08-10 71 views
0

我有一个“世界视图”,可以这么说,它由UIScrollView上的一个大的可缩放区域组成。当我缩小变焦时,我想要几个按钮来保留它们的世界位置,就像Google地图中的引脚一样。我一直在努力的代码(我一直在编码小时,但我认为这听上去不错...虽然我可能只是烧坏了)是:放大UIScrollView时的UIButton位置

- (void)scrollViewDidZoom:(UIScrollView *)scrollView 
{ 
    CGPoint center = button.center; 
    center.y = center.y * scrollView.zoomScale; 
    center.x = center.x * scrollView.zoomScale; 
    button.center = center; 
    NSLog(@"Button coordinates are %f, %f, zoomScale is %f", button.center.x, button.center.y, scrollView.zoomScale); 
} 

有人能看到我在做什么错?

在此先感谢!

回答

2

我解决了这个问题,只需在视图加载中设置CGPoint“中心”一次,然后根据原始位置计算新的中心点。

- (void)scrollViewDidZoom:(UIScrollView *)scrollView 
{ 
    CGPoint newCenter = center; //center is set at load time, and only once 
    newCenter.y = center.y * scrollView.zoomScale; //new center is calculated on original position 
    newCenter.x = center.x * scrollView.zoomScale; 
    button.center = newCenter; 

    NSLog(@"Button coordinates are %f, %f, zoomScale is %f", button.center.x, button.center.y, scrollView.zoomScale); 
} 

对不起,迷惑了这个问题,彼得。

+0

见UIView的文档中,你是如何设置加载视图中的“中心”?我正在尝试做同样的事情,我认为。我有一个500x500的地图和32x32的像素,我希望将这些图钉保持在32x32,并确保它们在放大后指向相同的位置。我很难让这个工作起作用。 – Arcadian 2011-08-31 19:36:40

+0

将第二个UIScrollView覆盖在缩放的第二个UIScrollView上,并将其中的触摸转发到您想放大的那个。让第二个(放大一个)返回 - (UIScrollView *)viewFroZoomingInScrollView委托方法中的视图,你应该很好。 – diatrevolo 2011-08-31 20:02:14