2

そのため、ios6 / iPhone5より前のiosアプリがありました。うまくいきました。現在、iPhone5 と ios6 向けに修正を試みています。順調に進んでおり、ios6 のバグの 99% を解決しました。動作しているようです。しかし、iPhone 5 は気まぐれです。

PhoneGap 1.8.1 を使用しています。ある時点で、この関数を使用してカメラで画像を撮ります。

function capturePhoto() {

        networkState = navigator.network.connection.type; 

            if (networkState == Connection.NONE)
                {
                  alert('You must be connected to the internet to use this feature!');

                }else{


                var options = {
                    quality: 100,
                    correctOrientation: false,
                    destinationType : navigator.camera.DestinationType.FILE_URI,
                    sourceType: navigator.camera.PictureSourceType.CAMERA,
                    encodingType: navigator.camera.EncodingType.JPEG,
              }
          navigator.camera.getPicture(onPhotoDataSuccess, onFail, options);

    }
}

次に、画像を HTML キャンバスの背景として表示します。kineticJS を使用していますが、この問題の目的のために、知っておく必要があるのは次のことだけだと思います。

var canvaswidth = window.innerWidth;
var canvasheight = window.innerHeight;

var darthVaderImg = new Kinetic.Image({
                                          x: 0,
                                          y: 0,
                                          image: images.darthVader,
                                          width: canvaswidth,
                                          height: canvasheight,
                                          name: "image"
                                          });

これはiPhone 4s ios 6で実行すると正常に動作し、これはAndroidで正常に動作します...しかし、iPhone 5では動作しません。写真は正しい向きですが、上部が押しつぶされてしまいます。iPhone 5 の画面サイズに合わせてハードコーディングしてみました。これは 640x1136 だと思います。

たとえば、画像の高さを誇張して2000に設定すると、画面をカバーしますが、ズームインされます。 ?

4

1 に答える 1

1

わかりました、だから私はこれを理解したと思います:

最初に気付くのは、iPhone 5 は iPhone 4S とまったく同じサイズの写真を撮るということです。私はこれをテストして確認しました。したがって、余分な画面サイズは関係ありません。

サイモン・マクドナルドが書いた記事を使って、これに気づいたら。ここで入手可能:

http://simonmacdonald.blogspot.co.uk/2012/07/change-to-camera-code-in-phonegap-190.html

次に、capturePhoto 関数に次の 2 行を追加しました。

targetWidth: 320,
targetHeight: 480,

これにより、撮影した画像が正しいサイズであることが保証され、追加の利点は、4 と 5 で正しいということです。

次に、キャンバスに正しいサイズで表示されていることを確認しました。キャンバスの表示サイズは次のようになりました。

var canvaswidth = 320;
var canvasheight = 480;

var darthVaderImg = new Kinetic.Image({
                                          x: 0,
                                          y: 0,
                                          image: images.darthVader,
                                          width: canvaswidth,
                                          height: canvasheight,
                                          name: "image"
                                          });

これにより、画像のバランスが保たれます。私の完璧主義者は、99% しか正しいとは言いませんが、キャンバスをカバーしており、不均衡ではありません。

これにより、iPhone 5 に余分な「スペース」が残りますが、ウィンドウの高さを検出する IF ステートメントでそれと戦っただけです。

window.innerHeight

これを変数として使用することで、iphone5 と iphone4/4s を区別することができ、表示アクションに関する限り、両方に異なるルールを設定できます。

これが同じ問題に遭遇した人に役立つことを願っています。

于 2012-10-02T15:19:13.013 に答える