在iOS 4.0上放大UIScrollView的问题

时间:2010-08-20 16:14:37

标签: iphone uiscrollview ios4

这是针对特定问题的一般性问题。

我在显示照片的应用中使用UIScrollView。在iOS< 4.0,缩放效果很好。在iOS 4.0.x上运行的相同应用程序有缩放问题。具体来说,如果图像没有填满视图(并且黑色条带出现在顶部/底部),则第一次缩放是不平稳的,并且垃圾数据显示在屏幕的底部。

要分析的源代码是复杂的分散方式,并在此处进行充分分享。任何人都可以建议任何可能导致这种奇怪行为的区域吗?

谢谢! 标记

编辑:这是来自双击处理程序的代码(借用tapDetectingImageView示例代码):

- (void)tapDetectingImageView:(TapDetectingImageView *)view gotDoubleTapAtPoint:(CGPoint)tapPoint {
    // double tap zooms in
    float newScale = [self zoomScale] * ZOOM_STEP;
    CGRect zoomRect = [self zoomRectForScale:newScale withCenter:tapPoint];
    [self zoomToRect:zoomRect animated:YES];
}

如果我在调用zoomToRect时更改动画参数,我可以强制怪异。当动画为NO时,我的图像变成2个图像叠加在另一个上面。底部图像是原始缩放级别,顶部图像是新的缩放级别。如果我滑动屏幕进行平移,图像会刷新。这几乎就像没有调用layoutSubviews或DrawRect一样。

1 个答案:

答案 0 :(得分:0)

这可能与也可能没有关系,但UIScrollView处理比例因子的方式在iPhone OS 3.2+中以未记录的方式发生了变化。

以前,如果您使用-scrollViewDidEndZooming:withView:atScale:通过将身份转换应用于视图来重新渲染内容,然后以新的比例因子大幅重新绘制图像,UIScrollView会忽略此内容并继续向您发送绝对比例因子基于视图的初始大小。

在iPhone OS 3.2+上,UIScrollView现在根据您最后一次将内容视图的转换重置为标识转换,为您提供相对比例因子。这可能会导致各种操作系统版本之间存在显着的扩展差异。