Ren*_*ené 1 cocoa-touch uiscrollview uiimageview ios
我正在使用带有多个UIScrollViews的UIScrollView作为子视图,每个都包含一个UIImageView来显示图片.
应用程序本身仅支持纵向方向,但我确实希望在旋转设备时旋转图像视图(观察UIDeviceOrientationDidChangeNotification).使用和两者
动画完成图像视图的旋转.
通过从包含图像视图的滚动视图返回图像视图来完成图像视图的缩放.  setTransform:CGAffineTransformScaleCGAffineTransformMakeRotationviewForZoomingInScrollView:
这一切都很有效,除了一件事:当图像视图旋转时,我无法再缩放.viewForZoomingInScrollView:正在调用调试节目,但scrollViewDidZoom:不是.  
有没有人知道可能导致这个问题的原因是什么?
通过将转换应用于UIScrollView(包含UIImageView)而不是UIImageView本身来修复它.  
仅将转换应用于UIScrollView并不能很好地工作.它会将旋转的图像放在较小的视图中,并且缩放不会使用可用的屏幕空间.
我终于设法解决了这个问题,所以这就是方法.
要求
我是如何实现它的
一个主要的UIScrollView,高度等于屏幕高度,宽度等于屏幕宽度*图片数.分页已启用.
这个主UIScrollView包含每张图片的子视图.每个子视图如下所示:
UIScrollView> UIView> UIImageView
UIScrollView具有屏幕大小,其origin.x属性对于第一个子视图为0,并随着每个后续UIScrollView的屏幕宽度而增加.结果是一个主UIScrollView,所有子UIScrollViews就像这样(没有间距):
??????????????????????
??????????????????????
?? 1 ?? 2 ?? 3 ?? 4 ??
??   ??   ??   ??   ??
??????????????????????
??????????????????????
为了解决旋转问题,UIImageView不再是UIScrollView的直接子视图,而是嵌入在容器UIView中.主UIScrollView委托
的viewForZoomingInScrollView:方法现在返回可见图片的容器UIView,因此这个容器UIView将用于缩放.图像视图的旋转仍然setTransform:使用CGAffineTransformScale和两者进行动画处理CGAffineTransformMakeRotation.
我猜测没有容器UIView的实现不起作用,是因为UIImageView不能再被主UIScrollView转换,当时已经应用了转换.
| 归档时间: | 
 | 
| 查看次数: | 935 次 | 
| 最近记录: |