【问题标题】:UIButton location while zooming a UIScrollView缩放 UIScrollView 时的 UIButton 位置
【发布时间】:2010-08-10 03:24:17
【问题描述】:

可以说,我有一个“世界观”,它由 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);
}

谁能看出我做错了什么?

提前致谢!

【问题讨论】:

    标签: cocoa-touch uikit uiscrollview uibutton


    【解决方案1】:

    我解决了这个问题,方法是在视图加载时仅设置一次 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);
    }
    

    抱歉,彼得,这个问题打错了。

    【讨论】:

    • 加载视图时如何设置“中心”?我正在尝试做同样的事情。我有一张 500x500 的地图和 32x32 的像素 我想将图钉保持在 32x32 并确保它们在放大后指向相同的位置。我很难让它工作。
    • 在您的缩放视图上覆盖第二个 UIScrollView,然后从该视图向前触摸到您要缩放的视图。让第二个(缩放的)在 -(UIScrollView*)viewFroZoomingInScrollView 委托方法中返回一个视图,你应该很高兴。
    【解决方案2】:

    您不需要自己做所有的数学运算。 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 文档

    【讨论】:

      猜你喜欢
      • 2013-05-25
      • 1970-01-01
      • 1970-01-01
      • 2019-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多