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

Posted

技术标签:

【中文标题】如何在 iPhone 模拟器中测试相机?【英文标题】:How do I test a camera in the iPhone simulator? 【发布时间】:2011-01-11 05:27:56 【问题描述】:

有没有什么方法可以在模拟器中测试 iPhone 摄像头而无需在设备上进行部署?这似乎非常乏味。

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

这有点糟糕,如果你需要在部署目标中设置的早期版本的操作系统上进行测试,那你猜你会被搞砸的。 以下是如何降级设备的说明:iclarified.com/31004/how-to-downgrade-from-ios-7-beta-to-ios-6 推送通知不是设备独有的功能吗? 我没有ios设备。如果我想在真实设备上进行测试,我需要向某人询问.. 太糟糕了.. wtf,并不是每个人都拥有 iOS 设备只是因为他们正在为 iOS 开发【参考方案2】:

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

我以类似于 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 照片。显然,要测试其他分辨率,您需要更改尺寸。

【讨论】:

Smart @Craig - 我在最近的一个项目中做了类似的事情(我猜不是那么聪明),但使用了存储在资源中的图片。这样就可以使用 fastlane 自动截屏以在 iTunesConnect 上发送【参考方案3】:

我没试过,不过你可以试试! iCimulator

【讨论】:

我正准备用同一个 repo XD 来回答。最好的问候。【参考方案4】:

没有(除非他们在 3.2 中添加了这样做的方法,还没有检查)。

【讨论】:

【参考方案5】:

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

【讨论】:

而且,您可以让它从 iSight 摄像头返回图像 :)【参考方案6】:

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

由于相机在模拟器中不可用,一个很好的技巧(我知道的唯一一个)是将视图大小调整为您需要的大小,正好是截取屏幕截图的时间。稍后您将对其进行裁剪。

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

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

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


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

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

【讨论】:

这就是问题的重点......模拟器中没有摄像头。 为什么需要相机来截屏? 为什么需要对您的意思的相机进行截图?以不同的屏幕尺寸上传您在商店中运行的相机应用程序的屏幕截图。【参考方案7】:

刚刚在 git 上找到了一个 repo,它可以帮助在 iOS 模拟器上使用图像、视频或 MacBook 相机模拟相机功能。

Repo

【讨论】:

以上是关于如何在 iPhone 模拟器中测试相机?的主要内容,如果未能解决你的问题,请参考以下文章

iOS:使用缩放模拟 iPhone 相机胶卷

如何在 OS X 上的 iPhone 4 模拟器中测试我的应用程序?

如何使用 iPhone 模拟器测试横向视图?

iPhone 模拟器 - 如何检测应用程序何时在模拟器上运行(因此可以设置测试数据)?

如何访问iOS模拟器相机[重复]

如何在 iPhone 模拟器中禁用 coreLocation?