有什么方法可以在模拟器中测试iPhone相机,而无需在设备上进行部署?这似乎非常乏味。
有什么方法可以在模拟器中测试iPhone相机,而无需在设备上进行部署?这似乎非常乏味。
Answers:
您必须在设备上测试许多特定于设备的功能,但这并不比使用模拟器难。只需为设备构建调试目标,然后将其连接到计算机即可。
需要实际设备的操作列表:
我需要测试一些自定义的照片叠加层。需要根据图像的大小/分辨率调整覆盖图。
我采用的方式与Stefan的建议类似,因此我决定编写一个“虚拟”摄像机响应。
当模拟器运行时,我执行此伪代码,而不是标准的“ captureStillImageAsynchronouslyFromConnection”。
在此伪代码中,我构建了具有必要分辨率的“黑照片”,然后将其通过管道发送,以将其像普通照片一样对待。本质上提供了非常快的相机的感觉。
CGSize sz = UIDeviceOrientationIsPortrait([[UIDevice currentDevice] orientation]) ? CGSizeMake(2448, 3264) : CGSizeMake(3264, 2448);
UIGraphicsBeginImageContextWithOptions(sz, YES, 1);
[[UIColor blackColor] setFill];
UIRectFill(CGRectMake(0, 0, sz.width, sz.height));
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData *imageData = UIImageJPEGRepresentation(image, 1.0);
上面的图片相当于当今大多数设备发出的8MP照片。显然,要测试其他分辨率,您可以更改大小。
需要访问相机的常见原因是为AppStore制作屏幕截图。
由于模拟器中没有摄像头,因此一个好技巧(我唯一知道的一个技巧)是根据需要的大小调整视图的大小,而只是抓屏时间。您稍后将对其进行裁剪。
当然,您需要使设备具有更大的屏幕。
iPad非常适合测试布局并为所有设备制作快照。iPhone6 +的屏幕截图必须稍长一些(按1,078125缩放-没什么大不了的…)
与iOS设备分辨率快速参考的良好链接:http : //www.iosres.com/
编辑:在最近的项目中,使用自定义摄像机视图控制器,我已经将UIPreview替换为AVPreview,而我仅使用该目标在模拟器中运行。这样,我可以自动为iTunesConnect上传截图。请注意,相机控制按钮不在叠加中,而是在相机预览的视图中。
下面的@Craig答案描述了另一种我发现很聪明的方法-与我的相机相反,它也适用于相机覆盖。
我从未尝试过,但是您可以尝试一下! iCimulator
我编写了一个替换视图以用于调试模式。它实现了相同的API,并进行了相同的委托回调。就我而言,我使它从测试集中返回了随机图像。写起来很琐碎。