非常に大きなビューを表示するためのスクロール ビューを作成していますが、スクロールとズームの両方の機能が必要です (画像ビューアーのように)。これが私が取ったステップです:
- インターフェイス ビルダーで、ビュー コントローラーにスクロール ビューアーを配置しました。
- スクロール ビューアーにピンチ ジェスチャ レコグナイザーを追加しました。
- ジェスチャ イベントを処理するために、ジェスチャ レコグナイザーのアクションをコードに接続しました。
- ビュー コントローラーが読み込まれると、ビューの原点を中央に変更します (
viewer
スクロール ビューアーです)。self.viewer.contentOffset = CGPointMake(384, 512);
- ハンドラーのコードでは、イベントを次のように処理しました。
(startScale
最初は 1.0 です)
- (IBAction)handlePinch:(UIPinchGestureRecognizer *)sender {
if(sender.state == UIGestureRecognizerStateEnded){
startScale *= sender.scale;
}else{
float result = sender.scale * startScale;
self.viewer.transform = CGAffineTransformMakeScale(result, result);
}
}
アプリを実行すると、ジェスチャが認識され、スケーリングが正しく機能しますが、ビュー全体0,0
が画面のポイント (左上) に対してスケーリングされます。写真を拡大するための自然なピンチ ジェスチャと同じように、ジェスチャを適用している中間点に対して拡大縮小する必要があります。
の原点も設定してみましself.viewer.frame
たが、何も変わりませんでした。問題について検索したところ、次のものが見つかりました。
UIViewの原点参照を設定するには? (すでに試しました)
https://stackoverflow.com/questions/13163279/pinch-punch-gestures-center (私の問題についてですが、未回答)
Xcodeで画像をズームおよびパンするためのUIPinchGestureRecognizer(やり過ぎのように見え、私には複雑すぎます。これが本当に私の状況に役立つかどうかはわかりません)
スクロールビューで自然なピンチを実現するにはどうすればよいですか?何が間違っていますか?
ありがとう、カン。