缩放UIScrollView时的UIButton位置

时间:2010-08-10 03:24:18

标签: cocoa-touch uikit uiscrollview uibutton

我有一个“世界观”,可以说,它由UIScrollView上的一个大的可缩放区域组成。当我捏缩放时,我想要几个按钮来保留它们的世界位置,就像谷歌地图中的引脚一样。我一直在尝试的代码(我已经编写了几个小时,但我觉得这听起来不错......虽然我可能只是被烧掉了)是:

- (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 个答案:

答案 0 :(得分:2)

我通过在视图加载时仅设置CGPoint“center”一次,然后根据原始位置计算新的中心点来解决这个问题。

- (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);
}

对于错误地提出这个问题感到抱歉,彼得。

答案 1 :(得分:1)

你不需要自己做所有的数学运算。 UIScrollView的基类UIView有四种在坐标系之间进行转换的方法,在UIScrollView的情况下进行缩放和平移:

– convertPoint:toView:
– convertPoint:fromView:
– convertRect:toView:
– convertRect:fromView:

请参阅http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html

上的UIView文档