3

UIScrollview では、スクロール/ドラッグすると、スクロールビューでスクロール/ドラッグした量を表すスクロールビューの contentOffset が変更されました。このようにして、スクロール用の scrollview のサブビューを更新しました。

ただし、(ピンチ ズームを使用して) スクロール ビューをズームすると、スクロール ビューの contentOffsets も変更されます。変更を zoomScale 値と関連付けることができないため、 contentOffset がどの程度変更されたかわかりません。では、ズームのために contentOffset の変更を知る方法はありますか?

私の意図は、スクロールビューのサブビューをそれに応じて更新できるように、ズーム中にドラッグするための contentOffset の変更の値を取得することです (これはコンテンツオフセットの変更をズームするために取得しているわけではありません)。

私はここで立ち往生しています。どんな助けでも大歓迎です。

ありがとう

シャイコット

4

1 に答える 1

6

小さなテスト プロジェクトをセットアップしましたが、contentOffset にzoomScale. したがって、それを考慮したい場合は、zoomScale使用する前に で割ってください。

小さな例で説明するのが最善かもしれません: scrollView を設定し、パンして少しズームするのに十分な大きさのビューを追加しました。そのビューに、何があっても同じ位置に保持したい小さな赤いビューを追加しました。scrollView の contentOffset プロパティを観察していますが、次のように実装しました。

CGPoint contentOffset = self.scrollView.contentOffset;
CGFloat zoomScale = self.scrollView.zoomScale;

self.moveView.frame = CGRectMake((contentOffset.x+10)/zoomScale,
                                 (contentOffset.y+10)/zoomScale,
                                 10,
                                 10);

これにより、moveView が画面上の同じ位置に保持され、ユーザーがズームしたときにのみスケーリングされます。

これで問題が少し解決することを願っていますが、他に何かできることがあればお知らせください。

于 2012-10-05T08:21:02.913 に答える