Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 调整CATiledLayer的大小';s使用缩放变换与边界操纵_Objective C_Cocoa_Resize_Calayer_Catiledlayer - Fatal编程技术网

Objective c 调整CATiledLayer的大小';s使用缩放变换与边界操纵

Objective c 调整CATiledLayer的大小';s使用缩放变换与边界操纵,objective-c,cocoa,resize,calayer,catiledlayer,Objective C,Cocoa,Resize,Calayer,Catiledlayer,我的图层托管工作区工作正常,因此当工作区大幅缩小时,使用CATiledLayers处理数百幅图像效果很好。所有图像都使用较低的分辨率表示,我的应用程序在平移和缩放大量图像时响应速度更快 但是,在我的应用程序中,我还为用户提供了通过调整大小手柄调整图层大小的功能。在我将图像层转换为使用CATiledLayers之前,我通过根据调整大小增量(鼠标拖动)操纵图像层的边界来调整层大小,效果很好。但现在有了CATiledLayers,当我通过边界操纵调整图层大小和通过缩放变换缩放/取消缩放工作空间时,这会

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

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

特别是,如果我将CATiledLayer的大小调整为宽度/高度大小的一半(面积的1/4),则其内部的图像将突然进一步缩放到调整大小的帧的1/2,留下3/4的帧为空。这似乎正是调用内部CATiledLayer逻辑以提供低分辨率图像表示的时候。如果我不触摸调整大小处理程序,只缩放/取消缩放工作区,效果很好


是否有一种方法可以使缩放/调整大小与CATiledLayers配合使用,或者我必须将层调整逻辑转换为使用缩放变换而不是边界操作吗?

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


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

我最终解决了这个问题,将我的图层调整逻辑转换为使用缩放变换,方法是覆盖自定义图像图层类的setBounds:方法,以缩放它包含的CATiledLayer,并相应地重新定位。此外,确保CATiledLayer的autoresizingMask设置为kCALayerNotSizable也很重要,因为我们正在setBounds:中手动处理大小调整。注意:请确保调用超类的setBounds实现:。层没有自动调整大小的掩码--是否已将层视图上的自动调整大小掩码设置为UIViewAutoresizingNone?层确实具有适用于Mac 10.5/6桌面Calayer的自动调整大小掩码。对于iOS,你是对的,他们不是。然而,我不是指iOS。