所以我有一个ios应用程序,pre ios6 / iPhone5。它运作良好。我目前正在尝试为iPhone5和ios6修复它。进展顺利,我已经解决了99%的ios6错误,似乎工作正常。但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例如,它确实覆盖了屏幕,但是放大了。我对于发生的事情感到很遗憾....任何人都有类似的问题,或任何想法?
答案 0 :(得分:1)
好的,所以我想我已经想到了这个:
首先要意识到iPhone 5的尺寸与iPhone 4S完全相同。我刚刚测试并证实了这一点。因此额外的屏幕尺寸无关紧要。
一旦我意识到这一点,请使用Simon MacDonald撰写的文章。可在此处获取:
http://simonmacdonald.blogspot.co.uk/2012/07/change-to-camera-code-in-phonegap-190.html
然后我将这两行添加到capturePhoto函数中:
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之间分辨,然后我可以为两者设置不同的规则,就显示操作而言。
希望这可以帮助遇到同样问题的人。