我有一个UIScrollView包含一个图像和一个分段控件,允许用户切换ScrollView内部的图像。如果我只是在UIImageView内部交换图像,它将以放大状态显示新图像。如何将UIScrollView重置回其未放大状态?如何重置(即取消缩放)UIScrollView?
回答
我有详细的讨论如何(以及为什么)UIScrollView缩放工作在github.com/andreyvit/ScrollingMadness/。
(该链接还包含了如何编程方式放大UIScrollView的描述,如何效仿图片库式传呼+变焦+滚动,实例项目和ZoomScrollView类,封装了一些变焦魔法。)
Quote:
UIScrollView没有“当前缩放级别”的概念,因为它包含的每个子视图可能有其自己的当前缩放级别。请注意,UIScrollView中没有字段保持当前缩放级别。但是我们知道有人存储缩放级别,因为如果捏住缩放子视图,然后将其转换重置为CGAffineTransformIdentity,然后再次捏住,则您会注意到子视图的前一缩放级别已恢复。事实上,如果你看看反汇编,它是UIView存储它自己的缩放级别(在_gestureInfo字段指向的UIGestureInfo对象内部)。它还有一套很好的无证方法,如zoomScale
和setZoomScale:animated:
。 (请注意,它也有一些旋转相关的方法,也许我们很快就会得到旋转手势支持。)
但是,如果我们创建一个新的UIView,只是为了缩放并添加我们真正的可缩放视图为它的孩子,我们将始终从缩放级别1.0开始。我的程序缩放实现是基于这个技巧。
如果您在完成缩放缩放事件时未重绘视图,则缩放因子将由您从viewForZoomingInScrollView:delegate方法返回的视图的transform属性设置。要重置此缩放,请将视图的transform属性值设置为CGAffineTransformIdentity。
但是,请注意,您的下一个缩放操作将在先前的缩放缩放停止的位置开始(即您的新缩放将被忽略)。要解决此问题,您可能需要执行一些我描述的内容here。
- 1. UIScrollView并取消缩放缩放手势
- 2. 如何在UIScrollView缩放后重置?
- 3. 启用UIScrollView缩放重置缩放视图转换的缩放
- 4. 设置缩放UIScrollView子类
- 5. 如何跟踪缩放UIScrollView?
- 6. UIScrollView不缩放
- 7. UIImageView缩放UIScrollView
- 8. UIScrollView。我如何在缩小和缩小缩放之间消除歧义?
- 9. 缩放在MonoTouch UIScrollView
- 10. UIImageView和UIScrollView缩放
- 11. UIScrollView +缩放+滑动
- 12. 轻松缩放UIScrollView
- 13. UIScrollView,滑动,缩放
- 14. 使用UIScrollView缩放
- 15. UILabel缩放与UIScrollView
- 16. UIScrollView没有缩放
- 17. UIScrollView不会缩放
- 18. 如何取消缩放Chrome- *控制台
- 19. 如何捕捉与UIScrollView缩放?
- 20. 如何缩放UIScrollView的特定部分?
- 21. 如何在滚动时缩放UIScrollView
- 22. 当滚动结束时重置嵌套的uiscrollview缩放
- 23. iPhone:我如何重绘子视图,但缩放uiscrollview
- 24. 如何取消/重置UIGestureRecognizer
- 25. 如何重置缩放oxyplot c#wpf
- 26. 缩放uiscrollview包含另一个uiscrollview
- 27. UIScrollView - 缩放问题(在任何缩放后切断UIScrollView内部的UIView底部)
- 28. OpenGL:如何撤消缩放?
- 29. 在UIScrollView中缩放UIImage
- 30. UIScrollView内容不缩放
所以当我切换图像时,我在做以下操作: \t imageView.transform = CGAffineTransformIdentity; 这是你的意思吗?因为它似乎没有影响它。 – Bdebeez 2009-03-04 21:28:13
你如何切换图像?您的内容是否为您的UIScrollView查看UIImageView?这个UIImageView是什么,然后你从viewForZoomingInScrollView返回:?这应该适用于滚动视图的主要子视图。 – 2009-03-05 00:49:27