2011-08-01 22 views
2

タッチに反応する小さなUIImageViewを作成するプログラムがあり、スーパービューの周りにドラッグすることができます。ピンチジェスチャーでUIImageViewをスケーリングする問題

イメージを拡大縮小するためにUIPinchGestureRecognizerを追加しました。現在のコードでは、イメージは完全にスケールアップされますが、新しいピンチジェスチャが開始されるとスケール1.0で再開します。

ContentScaleFactorを使用して初期のImageViewスケールを取得しようとしましたが、常に1.0であるため、以下のコードは正しく動作しません。

- (void)doPinch:(UIPinchGestureRecognizer *)pinch { 



if (pinch.state == UIGestureRecognizerStateBegan) { 

    initialScale = dragImage.contentScaleFactor;   

    } else { 

    CGFloat newScale = initialScale * pinch.scale; 

    CGAffineTransform transform = CGAffineTransformMakeScale(newScale,newScale); 

    dragImage.transform = transform; 

    } 


} 

このコードは、「Apress Beginning iPhone 4 Development」ブックの「Pinch me」の例を改訂したものです。

contentScaleFactorが機能しないため、コアグラフィックスプロパティを使用する必要がありますか? CGAffineTransformScaleには何か関係がありますか?

ありがとうございます!

答えて

3

contentScaleFactorは何がしたいことは、この行置き換えることです...あなたはそれがないと思う何をしていません。

initialScale = dragImage.transform.a; 

initialScale = dragImage.contentScaleFactor; 

を...そして、あなたはなるだろうhappyキャンパー( "a"は現在dragImageに適用されている変換マトリックスのx倍率を表します)。

+0

ありがとうございました! – REDMX

+0

神様、私は何故これを再設定しているのか分かりませんでした。私は奇妙な機能を書いていました。 – Pochi

関連する問題