【问题标题】:Xcode UIScrollView zoom same as MKMapView zoom (no effect on subview)Xcode UIScrollView 缩放与 MKMapView 缩放相同(对子视图没有影响)
【发布时间】:2015-07-23 04:01:51
【问题描述】:

我想在我的 UIScrollView 上添加缩放效果。我用UIScrollView 委托方法实现了它。

(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView

现在我想添加MKMapView 在其中的效果,如果我们放大或缩小地图的MKMapView 位置标记保持在相同的位置和相同的大小。 UIScrollView缩放效果如何才能达到同样的效果。

我最初的猜测是对CGAffineTransform 做点什么。但问题是何时以及如何?

谢谢, 杰·斯蒂芬。

【问题讨论】:

    标签: ios objective-c uiscrollview mkmapview zooming


    【解决方案1】:

    如果我理解正确,您希望能够放大和缩小滚动视图,同时其上的所有视觉对象都保持“锚定”到它们的位置。我建议你使用 UIScrollViewzoomScale 属性,它告诉你应该应用到滚动视图的内容位置的乘数。

    比如说,最初你有一些对象(例如UIImage),它是centerx = 100.0y = 100.0zoomScale = 1.0。定义几个常量/变量来将这些坐标存储在某处(例如,我们称它们为initialXinitialY)。然后在UIScrollViewDelegate 协议的- scrollViewDidZoom: 方法中跟踪zoomScale 的值,并简单地将初始(不是当前!)坐标与zoomScale 的值相乘。

    例如(根据您的代码进行调整):

    #pragma mark - UIScrollViewDelegate
    
    - (void)scrollViewDidZoom:(UIScrollView *)scrollView
    {
        CGFloat currentScale = scrollView.zoomScale;
    
        // Adjust object's position.
        CGPoint currentCenter = yourObject.center;
    
        currentCenter.x = initialX * currentScale;
        currentCenter.y = initialY * currentScale;
    
        yourObject.center = currentCenter;
    }
    

    希望这会有所帮助。

    【讨论】:

    • 好吧,我标记了您的答案,这也是解决方案。但在我的情况下,我通过重新调整框架而不是移动中心来处理它。
    猜你喜欢
    • 1970-01-01
    • 2018-06-24
    • 2011-02-22
    • 2012-07-20
    • 1970-01-01
    • 2016-08-11
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多