如何在iPhone模拟器中测试相机?


Answers:


137

您必须在设备上测试许多特定于设备的功能,但这并不比使用模拟器难。只需为设备构建调试目标,然后将其连接到计算机即可。

需要实际设备的操作列表:

  • 实际的电话
  • 相机
  • 加速度计
  • 真实的GPS数据
  • 指南针
  • 振动
  • 推送通知...

54
有点烂,如果您需要在部署目标中设置的较早版本的OS上进行测试,那您会被搞砸了。
marchinram 2010年


5
推送通知也不是仅设备功能吗?
mgarciaisaia

12
我没有ios设备。如果我想在真实设备上进行测试,则需要询问某人..太糟了..
Luca 2015年

10
wtf,并非所有人都因为他们正在为iOS开发而拥有iOS设备
Pete 17'7

7

我需要测试一些自定义的照片叠加层。需要根据图像的大小/分辨率调整覆盖图。

我采用的方式与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照片。显然,要测试其他分辨率,您可以更改大小。


聪明的@Craig-我在最近的项目中做了类似的事情(我猜不是那么聪明),但是使用了存储在资源中的图片。这样,可以使用fastlane自动截图以在iTunesConnect上发送
Moose

1

不可以(除非他们在3.2中添加了一种方法来做,但尚未检查)。


0

需要访问相机的常见原因是为AppStore制作屏幕截图。

由于模拟器中没有摄像头,因此一个好技巧(我唯一知道的一个技巧)是根据需要的大小调整视图的大小,而只是抓屏时间。您稍后将对其进行裁剪。

当然,您需要使设备具有更大的屏幕。

iPad非常适合测试布局并为所有设备制作快照。iPhone6 +的屏幕截图必须稍长一些(按1,078125缩放-没什么大不了的…)

与iOS设备分辨率快速参考的良好链接:http : //www.iosres.com/


编辑:在最近的项目中,使用自定义摄像机视图控制器,我已经将UIPreview替换为AVPreview,而我仅使用该目标在模拟器中运行。这样,我可以自动为iTunesConnect上传截图。请注意,相机控制按钮不在叠加中,而是在相机预览的视图中。

下面的@Craig答案描述了另一种我发现很聪明的方法-与我的相机相反,它也适用于相机覆盖。


3
这就是问题的关键……模拟器中没有相机。

1
为什么需要相机拍摄屏幕截图?
拉斐尔

3
为什么需要拍摄您所指摄像机的屏幕截图?以不同的屏幕尺寸在商店中上载正在运行的相机应用程序的屏幕截图。

0

刚刚在git上找到了一个回购协议,该回购协议有助于通过图像,视频或MacBook Camera在iOS Simulator上模拟相机功能。

回购



-1

我编写了一个替换视图以用于调试模式。它实现了相同的API,并进行了相同的委托回调。就我而言,我使它从测试集中返回了随机图像。写起来很琐碎。


3
而且,您可以使其从iSight相机返回图像:)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.