我有一個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