1

UIImagePickerController私はアプリケーションのプレビュー目的で使用してきました。カスタマイズしてズームイン/ズームアウトボタンを使用しましたCGAffineTransformScaleが、以前は使用していませんでしたが、このようなものを使用してズームイン機能をグーグルで実装しましCGAffineTransformScaleた...

- (void) zoom_in_clkd
{

        preview_picker.cameraViewTransform = CGAffineTransformScale(preview_picker.cameraViewTransform, 1.0, 1.2499);

}

それは問題ないようですが、ズームアウト機能を実装したいのですが、 の sx、sy 値がどうあるべきかわかりませんCGAffineTransformScale

誰でも良いチュートリアルやサンプルコードを教えてもらえますCGAffineTransformScaleか?

4

3 に答える 3

1

ズームアウト機能をさまざまな方法でシミュレートしました。私が行ったことは、アイデンティティにリセットし(元のサイズに戻す)、このように必要な位置に再びズームインすることです..

      if (cameraTransformX == 2.0) {
            preview_picker.cameraViewTransform = CGAffineTransformIdentity;
            cameraTransformX -= 1.0;
        } else if (cameraTransformX == 3.0) {
            preview_picker.cameraViewTransform = CGAffineTransformIdentity;
            preview_picker.cameraViewTransform = CGAffineTransformScale(preview_picker.cameraViewTransform, 1.0, 1.2499);
            cameraTransformX -= 1.0;
        }  else if (cameraTransformX == 4.0) {
            preview_picker.cameraViewTransform = CGAffineTransformIdentity;
            preview_picker.cameraViewTransform = CGAffineTransformScale(preview_picker.cameraViewTransform, 1.0, 1.2499);
            preview_picker.cameraViewTransform = CGAffineTransformScale(preview_picker.cameraViewTransform, 1.0, 1.2499);
            cameraTransformX -= 1.0;
        }

以前の変換に戻るのが適切な方法ではないことはわかっていますが、うまくいきます。:)

于 2013-02-16T05:44:17.520 に答える
1

sx と sy は、それぞれ x 値と y 値のズーム係数を示します。

ビューを縮小したい場合は、sx と sy < 1.0 を指定してください

このリンクからサンプル コードをダウンロードします。

于 2013-02-16T04:58:28.567 に答える
0

私の解決策は、最初の cameraViewTransform を保存し、それをズームイン/ズームアウトの両方に使用することでした。ズームアウトするには、スケールを減らします。たとえば、最初は 3 に設定します。これが私のコードです。

    // initial cameraViewTransform
    self.initialTransform = self.videoRecorderController.cameraViewTransform;

    // for zoom in
    if(self.zoomIn) {
            // increment scale
            self.scale += 0.5;
            self.videoRecorderController.cameraViewTransform = CGAffineTransformScale(self.initialTransform, self.scale, self.scale);
    }
    // for zoom out
    else {
           self.scale -= 0.5;
           self.videoRecorderController.cameraViewTransform = CGAffineTransformScale(self.initialTransform, self.scale , self.scale);
    }
于 2015-12-14T09:37:10.210 に答える