UIScrollView
を使用してUIImages
のギャラリーを表示するアプリケーションを開発しています。私の質問は、zoom
にタップしてzoom
にタップする方法です。UIScrollView
で処理するとどうなりますか?iOSでズームしてダブルタップしてズームアウトするにはどうすればいいですか?
19
A
答えて
38
あなたはUITapGestureRecognizerを実装する必要がある - ドキュメントhere - あなたのViewControllerで
- (void)viewDidLoad
{
[super viewDidLoad];
// what object is going to handle the gesture when it gets recognised ?
// the argument for tap is the gesture that caused this message to be sent
UITapGestureRecognizer *tapOnce = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapOnce:)];
UITapGestureRecognizer *tapTwice = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapTwice:)];
// set number of taps required
tapOnce.numberOfTapsRequired = 1;
tapTwice.numberOfTapsRequired = 2;
// stops tapOnce from overriding tapTwice
[tapOnce requireGestureRecognizerToFail:tapTwice];
// now add the gesture recogniser to a view
// this will be the view that recognises the gesture
[self.view addGestureRecognizer:tapOnce];
[self.view addGestureRecognizer:tapTwice];
}
は基本的にこのコードはUITapGesture
がself.view
に登録されている場合の方法tapOnceまたはtapTwiceがself
に呼び出されることを言っていますそのシングルまたはダブルタップに応じて。そのため、あなたのUIViewController
にこれらのタップのメソッドを追加する必要があります。ダブルタップでズームする二回
2
スウィフト3.0バージョンを助け
- (void)tapOnce:(UIGestureRecognizer *)gesture
{
//on a single tap, call zoomToRect in UIScrollView
[self.myScrollView zoomToRect:rectToZoomInTo animated:NO];
}
- (void)tapTwice:(UIGestureRecognizer *)gesture
{
//on a double tap, call zoomToRect in UIScrollView
[self.myScrollView zoomToRect:rectToZoomOutTo animated:NO];
}
希望。
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var imageView: UIImageView!
(通常のviewDidLoadで)どこか:
let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(onDoubleTap(gestureRecognizer:)))
tapRecognizer.numberOfTapsRequired = 2
scrollView.addGestureRecognizer(tapRecognizer)
ハンドラ:
func onDoubleTap(gestureRecognizer: UITapGestureRecognizer) {
let scale = min(scrollView.zoomScale * 2, scrollView.maximumZoomScale)
if scale != scrollView.zoomScale {
let point = gestureRecognizer.location(in: imageView)
let scrollSize = scrollView.frame.size
let size = CGSize(width: scrollSize.width/scale,
height: scrollSize.height/scale)
let origin = CGPoint(x: point.x - size.width/2,
y: point.y - size.height/2)
scrollView.zoom(to:CGRect(origin: origin, size: size), animated: true)
print(CGRect(origin: origin, size: size))
}
}
関連する問題
- 1. LatLngBoundを中心からズームして手動でズームするにはどうすればいいですか?
- 2. アンドロイドでイベントをダブルタップするにはどうすればいいですか
- 3. iOS描画アプリをズームするにはどうすればよいですか?
- 4. metatagを使用してios端末のモバイルウェブサイトをズームするにはどうすればよいですか?
- 5. Androidでダブルタップでズームする
- 6. UIScrollViewでクリップされていない画像をズームアウトするにはどうすればよいですか?
- 7. ワンタップでダブルタップをエミュレートするにはどうすればよいですか?
- 8. Ken Burns効果でズーム倍率のみをズームアウトするようにズーム係数を変更するにはどうすればよいですか?
- 9. Eclipse SDKでタイムラインパネルをズームアウトするにはどうすればよいですか?
- 10. Objective-c:ダブルタップを検出するにはどうすればよいですか?
- 11. ズームしてもモバイルブラウザで液体の改行を取得するにはどうすればよいですか?
- 12. iosでアプリケーションサンドボックスを指しているファイルピッカーを表示するにはどうすればいいですか?
- 13. d3js:バブルチャートをズームするにはどうすればいいですか?
- 14. iOSでiBeaconとしてiOSデバイスを使用するにはどうすればよいですか?
- 15. leaflet.jsでズームをインターセプトするにはどうすればよいですか?
- 16. ズームを使用してUIViewControllerを表示するにはどうすればよいですか?
- 17. iOS:GPUImageでズームした画像をカメラから保存するにはどうすればいいですか?
- 18. iOS 5で重複しているコアデータを防止するにはどうすればよいですか?
- 19. クロムレスポンスインスペクタがズームを変更しないようにするにはどうすればよいですか?
- 20. iOSでカスタムボタンを作成して何度も使用するにはどうすればいいですか?
- 21. node.js + Passportを使用してIOSでfacebook loginを認証するにはどうすればいいですか
- 22. iOSでローカルファイルをダウンロードして取得するにはどうすればいいですか?
- 23. ズームiOSのUtableViewCellでズームアウト機能を使用する
- 24. レスポンスレイアウトのズームを処理するにはどうすればよいですか?
- 25. 壁紙がズームされないようにするにはどうすればいいですか
- 26. タッチイベントでHTML 5キャンバスをピンチしたりズームしたりするにはどうすればよいですか?
- 27. 他のアプリがiOS 11でスライドオーバーとして実行されているかどうかを検出するにはどうすればよいですか?
- 28. ユーザーが使用しているiOSデバイスを検出するにはどうすればよいですか?
- 29. WebページがiPhoneからズームされないようにするにはどうすればよいですか?
あなたの答えをありがとうございました、私はそれをテストして報告しますが、できるだけ早く持っていました。 – Bruno
これは可能ですWebviewはサイドウェブビューのリンクに触れることを認識します – Codesen
[tapOnce requireGestureRecognizerToFail:tapTwice];まさに私が探していたものです。ありがとう! – Bastek