0
ピンチジェスチャー認識機能を画像ビューに追加してピンチを使用して写真を拡大/縮小します。以下は、私は、デリゲートメソッドで使用しているコードです:将来の変換のフレームをどのように決定しますか?更新:よりエレガントな方法?
- (void)scale:(UIPinchGestureRecognizer *)sender
{
if([sender state] == UIGestureRecognizerStateBegan)
{
lastScale = [sender scale];
}
if ([sender state] == UIGestureRecognizerStateBegan ||
[sender state] == UIGestureRecognizerStateChanged)
{
CGFloat currentScale = [[[sender view].layer valueForKeyPath:@"transform.scale"] floatValue];
CGFloat newScale = 1 - (lastScale - [sender scale]) * (UIComicImageViewPinchSpeed);
newScale = MIN(newScale, minScale/currentScale);
newScale = MAX(newScale, maxScale/currentScale);
CGAffineTransform transform = CGAffineTransformScale([[sender view] transform], newScale, newScale);
[sender view].transform = transform;
lastScale = [sender scale];
}
}
私は私が実際に変換を実行する前に、ImageViewのフレームの新しい中心がされる場所を決定する必要があります。とにかくこれを決めるには?基本的には、画像を画面の外に動かすか、それに近づけるとスケーリングを止めようとしています。形質転換されたフレームを把握するために、その方法を示唆するための以下ロビンへ
UPDATE
おかげ。私が今実行している問題は、変換が実行された後にフレームが無効になり、画像の境界を突き止めるために最新のフレームを追跡する必要があることです。明らかに、私はこれを手動で行うことができ、インスタンス変数に格納することができますが、これを達成するためのより "エレガントな"方法があるのだろうか?このような
感謝。私はこれを実装し、テストするために、currentFrameとnewFrameを印刷しました。最後のnewFrameは最新のcurrentFrameと一致する必要がありますが、そうではありません。彼らはいけませんか?それとも、何か間違っているのでしょうか? –