这是针对特定问题的一般性问题。
我在显示照片的应用中使用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一样。
答案 0 :(得分:0)
这可能与也可能没有关系,但UIScrollView处理比例因子的方式在iPhone OS 3.2+中以未记录的方式发生了变化。
以前,如果您使用-scrollViewDidEndZooming:withView:atScale:
通过将身份转换应用于视图来重新渲染内容,然后以新的比例因子大幅重新绘制图像,UIScrollView会忽略此内容并继续向您发送绝对比例因子基于视图的初始大小。
在iPhone OS 3.2+上,UIScrollView现在根据您最后一次将内容视图的转换重置为标识转换,为您提供相对比例因子。这可能会导致各种操作系统版本之间存在显着的扩展差异。