UICollectionView にズーム効果を実装しようとしています。目的の効果を得るために、次の 2 つのことを行います。
- レイアウトを効果的にスケーリング
- ピンチをしている 2 本の指の間にある任意のポイントからスケーリングが「伸びる」ことを確認します。
最初の部分は簡単ですが、今は 2 番目の部分に進んでいます。
私の戦略は、ジェスチャが開始されたときに collectionView のコンテンツの端からピンチの中心までの比例距離を見つけ、「比例点」(実際の値はスケールに基づいて変化します) がタッチ位置が変化するときのピンチの中心。
とにかく、それを行うコードはこれです(スケーリングコードは含まれていません)
CGPoint pinchCenter = [pincher locationInView:self.collectionView];
CGFloat ContentXToAlignWithPinch = self.collectionView.contentSize.width * proportionalXInContent;
CGFloat contentOffsetX = ContentXToAlignWithPinch - pinchCenter.x;
[self.collectionView setContentOffset:CGPointMake(contentOffsetX, 0) animated:NO];
NSLog(@"pinchCenter.x is %", pinchCenter.x);
しかし、pinchCenter.xi をログアウトすると、次のようになります。
2013-05-10 11:42:08.015 DMMS[20189:907] pinchCenter.x is 1548.000000
2013-05-10 11:42:08.036 DMMS[20189:907] pinchCenter.x is 203.000000
2013-05-10 11:42:08.041 DMMS[20189:907] pinchCenter.x is 1560.000000
2013-05-10 11:42:08.062 DMMS[20189:907] pinchCenter.x is 204.000000
2013-05-10 11:42:08.083 DMMS[20189:907] pinchCenter.x is 1570.000000
2013-05-10 11:42:08.102 DMMS[20189:907] pinchCenter.x is 212.000000
2013-05-10 11:42:08.120 DMMS[20189:907] pinchCenter.x is 1588.000000
2013-05-10 11:42:08.137 DMMS[20189:907] pinchCenter.x is 216.000000
2013-05-10 11:42:08.156 DMMS[20189:907] pinchCenter.x is 1593.000000
2013-05-10 11:42:08.175 DMMS[20189:907] pinchCenter.x is 218.000000
なぜこの pinchCenter.x はそのように飛び回っているのでしょうか? uipinch ジェスチャ認識エンジンの locationInView がピンチの中間点を与えるという私の仮定は間違っていますか?
どんな助けでも大歓迎です