ios - 无限缩放 CATiledlayer iOS

标签 ios ipad zooming infinite

每次您处于更深的缩放级别时,是否有一种方法可以重置您的缩放级别,以便您可以无限缩放?

我正在尝试创建一个 CATiledLayer,其中每个图 block 都有不同的颜色,当您放大一个图 block 时,您只会得到新的颜色,等等。

最佳答案

我不确定如何使用 CATiledLayer 执行此操作,但 Matt Neuburg 撰写的 Programming IOS 4 一书包含一个“细节缩放”部分,其中描述了如何使用 UIScrollView 执行类似操作。

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

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

您将如何使用它进行无限缩放?如果您不需要真正的无休止缩放,您可以在非常大的范围内执行上述操作以获得真实比例。

如果您想要真正无休止的缩放,则无法使用真实比例的有限边界变量来跟踪您的缩放级别。相反,您需要修改 scrollViewDidEndZooming:withView:atScale: 以便它 (1) 将 UIScrollView 的 zoomScale 重置为其默认值 1.0,(1) 删除内容 View 并提供一个新 View ,其中新 View 位于新的 zoomScale 处1.0 在视觉上与旧 zoomLevel 的移除 View 相同。通过这种方式,当用户不断地用双指放大手势放大时,UIScrollView 会反复从 1.0 循环到最大,在用户的手势之间,在每个循环中无形地替换底层 View 。

关于ios - 无限缩放 CATiledlayer iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7500987/

相关文章:

ios - 如何通过 iOS 应用程序从设备拍照?

iphone - UITableViewCell 重复 UIImages

ios - iOS 中两个位置之间的估计时间

ios - 为什么CFStreamCreatePairWithSocketToHost成功后CFStreamCreatePairWithSocketToCFHost失败

ios - 基于NSDate将数组映射到字典

ios - 提高核心情节的表现

javascript - 自动缩放表单后如何重置屏幕缩放

iphone - 防止缩放到一定限度

iphone - 如何在实用程序类型的应用程序中查找错误?

ios - 限制 iPad 只能使用一个应用程序