无尽的缩放CATiledlayer iOS

时间:2011-09-21 13:54:47

标签: ios ipad zoom infinite

每次进行更深的缩放级别时,是否有办法重置缩放级别,以便进行无限缩放?

我正在尝试创建一个CATiledLayer,其中每个图块具有不同的颜色,当您放大图块时,您只需获得新颜色,等等。

1 个答案:

答案 0 :(得分:2)

我不知道怎么用CATiledLayer来做这件事,但Matt Neuburg编写的IOS 4编程包含了一个“Zooming with Detail”一节,它描述了如何使用UIScrollView做类似的事情。

UIScrollView支持缩小缩放到其内容,但它只是通过缩放变换放大其内容的未缩放渲染,而不是在较高的zoomScale重新渲染其内容。因此,为了提供实际显示增加细节的缩放,您需要添加一些逻辑。

基本上,本书建议你实现scrollViewDidEndZooming:withView:atScale:这样它(1)将UIScrollView的zoomScale重置为其默认值1.0,并且(2)删除内容视图并提供包含所需内容的新视图真实的缩放比例。您需要引入自己的ivar来手动跟踪这个真实比例。结果是,当您进一步放大并且真实比例保持单调增加时,UIScrollView包含一系列不同的视图,并在其范围内保持自己的zoomScale循环,从1.0到最大,然后重置为1.0,然后从1.0到最大等等。这本书给出了一个骨架的例子(第1版第506页,第二版本书)。

你如何使用它来进行无尽的缩放?如果你不需要真正无限的缩放,你可以在真正的比例范围内以非常大的范围进行上述操作。

如果您想要真正无限的缩放,则无法使用有限限制的变量跟踪缩放级别以获得真实比例。相反,您将修改scrollViewDidEndZooming:withView:atScale:以便它(1)将UIScrollView的zoomScale重置为其默认值1.0,(1)删除内容视图并提供新视图,其中新视图位于新的zoomScale 1.0在视觉上与旧zoom23的删除视图相同。通过这种方式,当用户通过捏放手势保持放大时,UIScrollView将重复从1.0循环到最大,在用户的手势之间无形地替换每个周期的基础视图。