有没有办法在模拟器中测试 iPhone 摄像头,而不需要在设备上部署?这看起来太无聊了。
没有(除非他们在3.2中添加了一种方法,还没有检查)。
有许多特定于设备的特性需要在设备上进行测试,但这并不比使用模拟器更难。只需为设备构建一个调试目标,并将其连接到计算机即可。
需要实际设备的操作列表:
我编写了一个在调试模式下使用的替换视图。它实现相同的 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 相机功能。
回购
我没试过,不过你可以试试! 电子模拟器
提交答案