如何在 iPhone 模拟器中测试摄像头?

有没有办法在模拟器中测试 iPhone 摄像头,而不需要在设备上部署?这看起来太无聊了。

74551 次浏览

没有(除非他们在3.2中添加了一种方法,还没有检查)。

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

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

  • 真正的手机
  • 相机
  • 加速度计
  • 真正的 GPS 数据
  • 罗盘
  • 振动
  • 推送通知。

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

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

由于相机在模拟器中是不可用的,一个好的技巧(我知道的唯一一个)是调整你的视图大小,你需要的,只是时间采取截图。以后再收割。

当然,你需要有更大屏幕的设备可用。

IPad 非常适合测试所有设备的布局和快照。 IPhone6 + 的屏幕截图需要稍微拉长一些(比例为1,078125-没什么大不了的... ...)

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


编辑: 在最近的一个项目中,使用了一个定制的摄像机视图控制器,我用一个 UIImageView 替换了 AVPreview,这个 UIImageView 只能在模拟器中运行。通过这种方式,我可以自动化 iTunesConnect 上传的截图。请注意,相机控制按钮不是在一个覆盖,但在相机预览视图。

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

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

我以一种类似于 Stefan 建议的方式来处理这个问题,我决定编写一个“虚拟”摄像机响应代码。

当模拟器运行时,我执行这个虚拟代码,而不是标准的“ captureStillImageAsynouslyFromConnection”。

在这个虚拟代码中,我构建了一个必要分辨率的“黑色照片”,然后通过流水线将其发送出去,以便像对待普通照片一样对待它。本质上提供了一个非常快的相机的感觉。

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);

上面的图片相当于当今大多数设备发出的800万张照片。显然,为了测试其他分辨率,您需要更改大小。

刚刚发现一个 git 上的回购,帮助模拟 iOS 模拟器上的图像,视频,或您的 MacBook 相机功能。

回购

我没试过,不过你可以试试! 电子模拟器

 iCimulator
”/> 香港中文大学</div>
                                                                            </div>
                                </div>
                            </div>
                        </div>
                                            </div>
                </div>

                <br/>
                <div class=