私はUIScrollViewに画像と、ユーザーがScrollViewの内部で画像を切り替えることを可能にするセグメント化されたコントロールを含んでいます。私がUIImageViewの内部にイメージをスワップするだけでは、新しいイメージがズームインされた状態で表示されます。 UIScrollViewをズームしていない状態に戻すにはどうすればよいですか?UIScrollViewをリセット(つまりズーム解除)するにはどうすればよいですか?
答えて
私は、UIScrollViewズームがどのように(そしてなぜ)なぜ機能するのか、詳細な説明をgithub.com/andreyvit/ScrollingMadness/で行っています。
(リンクはまた、ズーム魔法の一部をカプセル化フォトライブラリスタイルのページング+ズーム+スクロール、サンプルプロジェクトとZoomScrollViewクラスをエミュレートする方法を、プログラム的にUIScrollViewのをズームする方法の説明が含まれています。)
UIScrollViewには現在のズームレベルという概念がありません。これは、それぞれのサブビューには現在のズームレベルが設定されている可能性があるためです。 UIScrollViewには、現在のズームレベルを保持するフィールドはありません。ただし、サブビューをピンチズームしてから変換をCGAffineTransformIdentityにリセットしてから再びピンチすると、サブビューの以前のズームレベルが復元されていることに気づくでしょう。
実際、逆アセンブリを見ると、独自のズームレベル(_gestureInfoフィールドが指すUIGestureInfoオブジェクト内)を格納するのはUIViewです。それには、zoomScale
とsetZoomScale:animated:
のような素敵な文書化されていないメソッドもあります。 (あなたには回転関連の方法がたくさんありますが、まもなくすぐにローテーションジェスチャをサポートしています。)
ただし、ズーム用に新しいUIViewを作成し、実際のズーム可能なビューをその子では、常にズームレベル1.0から開始します。プログラムによるズームの実装は、このトリックに基づいています。
ピンチズームイベントの完了時にビューを再描画しない場合は、viewForZoomingInScrollView:delegateメソッドから返されたビューのtransformプロパティによってズーム係数が設定されます。このズームをリセットするには、ビューのtransformプロパティの値をCGAffineTransformIdentityに設定します。
しかし、次のピンチズーム操作は、以前のピンチズームがオフになったところから開始されます(つまり、新しいスケールは無視されます)。この問題を回避するには、私が説明しているものの一部を実装する必要がありますhere。
画像を切り替えると、次のようになります。 \t imageView.transform = CGAffineTransformIdentity; それはあなたが意味するものですか?それはそれを行うようには見えないからです。 – Bdebeez
どのように画像を切り替えるのですか? UIScrollViewのコンテンツビューはUIImageViewですか?このUIImageViewは、あなたがviewForZoomingInScrollViewから返すものですか?これは、スクロールビューのメインサブビューで機能するはずです。 –
はい、私はそれをやっているのです。 Scollビューには、UIImageViewという1つのサブビューが含まれています。選択が変更されたときに、別のUIImageにその.imageプロパティを設定しています。 – Bdebeez
- 1. SQL Serverのトランザクション分離レベルを解除またはリセットするにはどうすればよいですか?
- 2. UIScrollViewのコンテンツをどのようにズームするのですか
- 3. タブバーアイテムをクリックするとUIScrollViewをゼロスページ/インデックスにリセットするにはどうすればよいですか?
- 4. データファイルをハッシュ/ハッシュ解除するにはどうすればよいですか?
- 5. エラーを解除するにはどうすればよいですか?
- 6. マルチビューアプリケーションでUIScrollViewを使用するにはどうすればよいですか?
- 7. iOS描画アプリをズームするにはどうすればよいですか?
- 8. レスポンスレイアウトのズームを処理するにはどうすればよいですか?
- 9. UIScrollViewズームバウンスをキャンセルするにはどうすればよいですか?
- 10. AndroidでItemizedOverlayをクリア/リセットするにはどうすればよいですか?
- 11. JavaでJProgressBarをリセットするにはどうすればよいですか?
- 12. Railsでアセットパイプラインをリセットするにはどうすればよいですか?
- 13. MacPortsでポートをリセットするにはどうすればよいですか?
- 14. フラグをfalseにリセットするにはどうすればよいですか?
- 15. WebページがiPhoneからズームされないようにするにはどうすればよいですか?
- 16. タッチイベントでHTML 5キャンバスをピンチしたりズームしたりするにはどうすればよいですか?
- 17. UIScrollViewのすべてのサブビューを削除するにはどうすればよいですか?
- 18. Web2Pyアプリケーションをリセットするにはどうすればよいですか?
- 19. ModelStateの値をリセットするにはどうすればよいですか?
- 20. UINavigationControllerをリセットするにはどうすればよいですか?
- 21. テーブルビューをリセットするにはどうすればよいですか?
- 22. セッションIDをリセットするにはどうすればよいですか?
- 23. CancellationTokenを正しくリセットするにはどうすればよいですか?
- 24. 入力フィールドをリセットするにはどうすればよいですか? jQuery
- 25. PushViewControllerを解除するにはどうすればいいですか?
- 26. ズーム中にウェブサイトのコンテンツが動かないようにするにはどうすればよいですか?
- 27. Androidでキーボードのフォーカスを解除してキーボードを削除するにはどうすればよいですか?
- 28. イベントからイベントハンドラを削除/登録解除するにはどうすればよいですか?
- 29. MonoTouchでUIScrollViewをズームする
- 30. iPhoneのUIScrollviewでスクロールバーを非表示/削除するにはどうすればいいですか?
現在、公式の 'zoomScale'プロパティがあるようです。 – BastiBen