2

スーパービューの周りにドラッグできるように、タッチに反応する小さな UIImageView を作成するプログラムがあります。

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

最初の ImageView スケールを取得するために contentScaleFactor を使用しようとしましたが、常に 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 book の「Pinch me」の例を基にしています。

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

ありがとう!

4

1 に答える 1

3

contentScaleFactor は、あなたが思っていることをしません...あなたが望むのは、この行を置き換えることです:

initialScale = dragImage.contentScaleFactor; 

initialScale = dragImage.transform.a;

...そして、あなたは幸せなキャンピングカーになるでしょう (「a」は、dragImage に現在適用されている変換行列の x 倍率を表します)。

于 2011-08-01T21:51:31.040 に答える