我想在我的UIScrollView
上添加缩放效果。我用UIScrollView
委托方法实现了它。
(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
。
现在我要添加MKMapView
所具有的效果,如果我们放大或缩小地图的MKMapView
位置标记,则保持在相同的位置和相同的大小。我们如何才能通过UIScrollView
缩放效果实现相同的效果。
我最初的猜测是对CGAffineTransform
做些什么。但问题是何时以及如何?
谢谢, 杰伊斯蒂芬。
答案 0 :(得分:0)
如果我理解正确,您希望能够放大和缩小滚动视图,同时其上的所有可视对象保持"锚定"到他们的位置。我建议您使用UIScrollView
zoomScale
属性,该属性会告诉您应该应用于滚动视图的内容位置的乘数。
比如说,最初你有UIImage
,center
和x = 100.0
的某个对象(例如y = 100.0
)。zoomScale = 1.0
。定义一些常量/变量以将这些坐标存储在某处(例如,让它们称为initialX
和initialY
)。然后,您可以在zoomScale
协议的UIScrollViewDelegate
方法中跟踪- scrollViewDidZoom:
值,并简单地将初始(非当前!)坐标与zoomScale
的值相乘。
E.g。 (调整你的代码):
#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;
}
希望这有帮助。