0

我已经让我的图层托管工作区正常工作,因此当工作区大幅缩小时,使用 CATiledLayers 处理数百张图像可以很好地工作。所有图像都使用较低分辨率的表示,并且我的应用程序在平移和缩放大量图像时响应更快。

但是,在我的应用程序中,我还为用户提供了使用调整大小句柄调整图层大小的能力。在我将图像图层转换为使用 CATiledLayers 之前,我通过根据调整大小增量(鼠标拖动)操纵图像图层的边界来调整图层大小,并且效果很好。但是现在有了 CATiledLayers,当我通过边界操作调整图层大小和通过缩放变换缩放/取消缩放工作区时,这会导致 CATiledLayers 感到困惑。

具体来说,如果我将 CATiledLayer 的大小调整为宽度/高度大小的一半(区域的 1/4),则其中的图像会突然缩放到调整大小后的帧的 1/2,留下 3/4 的帧空。这似乎正是调用内部 CATiledLayer 逻辑以提供较低分辨率图像表示的时候。如果我不触摸调整大小处理程序而只是缩放/取消缩放工作区,它工作正常。

有没有办法让缩放/调整大小与 CATiledLayers 一起玩得很好,或者我是否必须将我的图层调整大小逻辑转换为使用缩放变换而不是边界操作?

4

1 回答 1

2

我最终通过覆盖我的自定义图像层类的 setBounds: 方法来转换我的层调整大小逻辑以使用缩放变换来解决这个问题,以缩放它包含 CATiledLayer,并相应地重新定位。确保 CATiledLayer 的 autoresizingMask 设置为 kCALayerNotSizable 也很重要,因为我们在 setBounds: 中手动处理调整大小。

注意:一定要调用超类的 setBounds: 实现。

于 2010-12-14T09:14:23.037 回答