0

我有一个 UIScrollview,可以通过双击放大和缩小 PNG 图像。按照我的设置方式,我使用 UIGraphicsBeginImageContext/UIGraphicsEndImageContext 创建了几个不同尺寸的 PNG 图像,并将所有 UIImage 存储在 NSMutableArray 中。然后,我通过根据当前缩放级别将 UIImageView 的图像交换为正确的 UIImage 来在屏幕上显示正确的图像(我这样做是为了始终显示一个很好的抗锯齿图像,而不是仅缩放原始图像)。

我遇到的问题是,第一次将图像交换到以前未显示的图像时,会出现轻微的卡顿。第一次以后,我可以放大和缩小一整天,没有卡顿。我已经尝试过这里这里建议的解决方案,但他们没有解决问题。

目前,我找到了一种解决方法,方法是在 0.01 秒后交换图像,同时取消任何挂起的交换请求。这工作正常,但它不是一个可靠的修复。显然,必须有一种方法使图像处于就绪状态,因为它们在第一次显示后就准备好了。请帮我!

4

1 回答 1

1

您实际上不需要创建不同大小的 png。您应该拥有的是滚动视图内的 UIImageView ,其中原始 PNG 作为图像。然后将其添加到您的 .m 文件中(确保您的头文件中有。

-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{ return theImageView; }

您还可以通过以下方式设置最大和最小缩放比例:

[scrollview setMinimumZoomScale:0.5];//will be half size
[scrollview setMaximumZoomScale:3.0];//will be 3X

执行上述操作将自动为您设置捏合缩放。那么你只需要输入代码来监听双击并告诉它这样做:

[scrollview setZoomScale:1.0 animated:YES];//returns it back to original size

希望这会有所帮助 - 如果不是您想要的效果,请告诉我。

干杯,

迈克尔

于 2011-04-13T08:43:25.800 回答