我正在尝试使用UIImagePickerController
with UIImagePickerControllerSourceTypePhotoLibrary
,但它显示“没有照片”。模拟器从哪里获取图像?我应该在哪里复制图像以便它们显示在模拟器中?
35 回答
逐步解释 Airsource Ltd 将图像添加到模拟器的答案:
- 将其拖到模拟器,然后 Safari 打开(或使用 Safari 浏览到 Internet 中的图像)
- 按住你的图片
- 当弹出窗口出现时,选择保存图像并享受;)
更新:对于 iOS Simulator 4.2,请执行两次这些步骤以使其正常工作。谢谢kevboh
!
更新:这也适用于 iOS 模拟器 6.1
将图像、视频等放到模拟器上的最简单方法是将它们从您的计算机拖放到模拟器上。这将导致模拟器打开照片应用程序并开始填充库。
如果您想要一个可编写脚本的方法,请继续阅读。
注意 - 虽然这是有效的并且有效,但我认为Koen 下面的解决方案现在是一个更好的解决方案,因为它不需要重新启动模拟器。
通过转到 xCode->Devices,选择您的模拟器并检查 Identifier 值来识别您的模拟器。或者您可以确保模拟器正在运行并运行以下命令以获取设备 IDxcrun simctl list | grep Booted
去
~/Library/Developer/CoreSimulator/Devices/[模拟器标识符]/data/Media/DCIM/100APPLE
并添加 IMG_nnnn.THM 和 IMG_nnnn.JPG。然后,您需要重置您的模拟器(硬件->重新启动)以使其注意到新的更改。它们是否不是 JPEG 并不重要——它们都可以是 PNG,但似乎它们都必须存在才能正常工作。如果 DCIM 不存在,您可能需要创建它,在这种情况下,您应该从 0001 开始 nnnn。JPG 文件是全尺寸版本,而 THM 文件是缩略图,大小为 75x75 像素。我编写了一个脚本来执行此操作,但这里有一个更好的文档(-link 不再起作用)。
您还可以通过点击并按住图像在模拟器中添加来自 safari 的照片。如果您将图像(或任何其他文件,如 PDF)拖到模拟器中,它将立即打开 Safari 并显示图像,因此这是一种获取图像的非常简单的方法。
3 个简单的步骤
- 将图像拖放到模拟器上
- 这将打开一个带有您的图像的浏览器 - 单击并按住图像
- 这将打开选项 - 保存图像
- 这会将图像复制到模拟器上
在 iOS 8.0 中,我们添加了将图像拖放到 iOS 模拟器中的功能。您可以将一堆图像拖到窗口中,它们应该被导入到该模拟设备的照片卷轴中。您也可以使用 simctl 命令行工具来执行此操作。'xcrun simctl addphoto'
从 Xcode 6 开始,您可以使用命令行工具xcrun simctl
。
用法很简单;要将照片添加到当前正在运行的模拟器中,请使用booted
占位符。
xcrun simctl addmedia booted ./MyFile.jpg
要将其添加到任何其他模拟器,请使用其设备 ID,可以通过运行xcrun simctl list
.
xcrun simctl addmedia E201E636-CE6C-11E5-AB30-625662870761 ./MyFile.jpg
这很简单。只需按照以下步骤操作:
- 将图像拖放到模拟器上
- 现在图像在 Safari 浏览器中打开 (file://.../ImageName)。点击并按住图像。
这将显示带有保存、取消选项的 actionSheet(在 iOS 7 模拟器的情况下也复制)。
保存图像。图像被添加到库中。
我刚刚偶然发现如何在 iOS 模拟器上批量上传图片。(我只在 6.1 上确认过。)
备份文件夹:
~/Library/Application Support/iPhone Simulator/6.1/Media
将所有图像复制到文件夹中:
~/Library/Application Support/iPhone Simulator/6.1/Media/DCIM/100APPLE
移动或删除文件夹:
~/Library/Application Support/iPhone Simulator/6.1/Media/PhotoData
重启 iOS 模拟器
打开照片应用
模拟器将恢复 100APPLE 文件夹中的所有图像!
对于 iOS 7,我执行了以下操作:
将照片复制到这两个文件夹:
~/Library/Application Support/iPhone Simulator/6.1/Media/DCIM/100APPLE
~/Library/Application Support/iPhone Simulator/7.0/Media/DCIM/100APPLE
仅删除这 4 个文件(以避免重新启动时重复):
~/Library/Application Support/iPhone Simulator/6.1/Media/PhotoData/Photos.sqlite-shm
~/Library/Application Support/iPhone Simulator/6.1/Media/PhotoData/Photos.sqlite-wal
~/Library/Application Support/iPhone Simulator/7.0/Media/PhotoData/Photos.sqlite-shm
~/Library/Application Support/iPhone Simulator/7.0/Media/PhotoData/Photos.sqlite-wal
只需将图像拖到 iPhone 模拟器上。
使用 Xcode 6+(iOS 模拟器 8.1 及更高版本)附带的新 iOS 模拟器,这要容易得多。现在您所要做的就是将一张或多张照片拖到 iOS 模拟器窗口上,而不是打开 Safari,而是打开照片应用程序打开,并立即将所有拖入的照片添加到设备中。
方法 1(最简单的方法):如果您在 Mac 上有图像
您可以将图像从 Mac 上的 Finder 拖到模拟器中,然后将其保存到“已保存的照片”相册中。
方法 2:如果它在任何 URL 上
将网页中的图像保存到“照片”应用程序
- 将指针放在要保存的图像上,然后按住鼠标按钮或触控板。
- 当菜单出现时,单击 Save Image 将图像保存到 iOS 模拟器中的 Photos 应用程序中。
- 图像将保存到“照片”应用程序中的“已保存照片”相册中。
如果有人正在寻找有关在模拟器中复制和粘贴 的Apple 文档。
没有一个答案有我需要的确切解决方案。
我发现自己在 iOS 5.0 及以上模拟器上工作的步骤如下:
如果模拟器正在运行 xcode 项目,请关闭它。
通过单击从 Dock 运行模拟器。
将图像拖放到模拟器中。
点击并按住图像(在 Safari 中打开)并选择保存选项。
你完成了。
对于 iOS 5.1,这将进一步更改为新路径
~/Library/Application Support/iPhone Simulator/5.1/Media/DCIM/100APPLE
从 iOS 8 开始,您只需将所有照片拖到模拟器窗口上,它们就会自动保存到相机胶卷。你可以一次做尽可能多的事情。
如果您需要导入的不仅仅是一张或两张照片,请查看我写的这篇文章。它描述了一种用于批量导入照片的简单方法,并且适用于 iOS 4.x。
如果您因为遇到错误而无法拖放文件:
一项或多项媒体项目导入失败: : 操作无法完成。(PHPhotosErrorDomain 错误 -1。)
将文件移动到Documents
文件夹中,然后将它们拖到模拟器中。这将触发模拟器请求访问您的文件的权限。将它们放在Downloads
文件夹中,不会。
对于 iOS 8,如果不需要保留照片拍摄日期和位置,只需将照片文件拖放到模拟器中即可。
要保留照片元数据,请执行以下操作:
- 将照片文件复制到:/Users/{USER}/Library/Developer/CoreSimulator/Devices/{UDID}/data/Media/DCIM/100Apple
- 删除(或重命名)文件夹:/Users/{USER}/Library/Developer/CoreSimulator/Devices/{UDID}/data/Media/photoData
- 重新启动模拟器
注意:您需要将 {USER} 替换为您的用户名,将 {UDID} 替换为模拟器的 UDID。要为您的模拟器查找 UDID,请从终端运行“xcrun simctl list”。
quit the simulator.
Run simulator from the dock by clicking on it.
Drag & drop the image into simulator which you want to add.
it will open image in safari .
tap and hold the image and click the save option.
then open gallery and you will see the image which u had saved recently.
将图像添加到运行 IOS 8.0 的 Iphone Simulation 更加容易。
- 将您的图像拖到模拟器中
- IOS 打开照片应用程序,您的图像现在是您收藏的一部分。
不再需要处理 Safari
对于 iOS 4.2,我必须去创建 100APPLE 文件夹并重新启动模拟器,然后它就可以工作了。
试试我制作的这个应用程序。下载代码并在模拟器中运行https://github.com/cristianbica/CBSimulatorSeed
对于 iOS 8.0,答案已过时。我在以下路径中找到了媒体资源: ~/Library/Developer/CoreSimulator/Devices/[DeviceID]/data/Media/DCIM/100APPLE
在带有 Xcode 11 的 OS X Catalina 中,您必须以不同的方式执行此操作。
首先你必须启动模拟器。如果要复制,请向多个模拟设备说一张照片。启动所有这些。然后右键单击一个(多个图像将失败。只做一个文件。)。
分享 -> 模拟器
将弹出一个“共享表”。您必须在组合框中选择一个活动模拟器并点击发送。
它将发送一对多但不是多对多的选定照片。
我希望这对人们有所帮助。Xcode 和 OS X 的最新版本支持拖放,但 OS X Catalina 和 Xcode 11 不支持。
虽然这是在方向上,但它目前不起作用。
对我有用的是首先将我的图像导入 OS X 上的 iPhoto,然后将它们从我的 OS X iPhoto 拖放到模拟器中。看起来将照片拖放到模拟器中目前仅适用于 OS X iPhoto。:-(
只需将图像拖放到 iphone 模拟器中。浏览器将打开以显示您的图像。按图像直到您没有收到保存图像的选项。然后保存图像。就是这样 :)。您将在模拟器中的照片应用程序中看到您的图像....
我写了一个 bash 脚本来做到这一点。检查链接[1]
#!/bin/bash
# Imports pictures into all iOS simulators.
path_to_pic="src/ios/pictures/"
mkdir -p /Users/$(whoami)/Library/Application\ Support/iPhone\ Simulator/{5.0,5.1,6.0,6.1}/Media/DCIM/100APPLE/
find ~/Library/Application\ Support/iPhone\ Simulator/ -type d -name '100APPLE' -exec cp /Users/$(whoami)/$path_to_pic/* {} \;
只是告诉你:KONG 的解决方案也适用于 iOS 7 beta。
他的解决方案是:
将图像拖到模拟器,然后 Safari 打开(或使用 Safari 浏览到 Internet 中的图像)按住图像当弹出窗口出现时,选择保存图像并享受;)
我只需要一些随机图像进行测试,所以我就是这样做的。
我有世界上最简单的解决方案。只需在模拟器中打开 Safari,转到 Google 图片(或您自己的 Web 或 Dropbox URL),查看图片,按住鼠标按钮 2 秒钟,您将看到“保存图片” - 它会直接保存到照片库。冲洗并重复。
更简单的方法是:在模拟器上打开 safari > 点击 www.google.com 搜索随机照片“自然”打开每张图片,按下并保存。
1. CD到这个路径:
/Users/[macOS 用户]/Library/Developer/CoreSimulator/Devices/[模拟器标识符]/data/Media/DCIM/100APPLE
[模拟器标识符] 或 UDID 可以在以下位置找到:硬件 => 设备 => 管理设备。
例如。cd /Users/rnDeveloper/Library/Developer/CoreSimulator/Devices/7508171A-DC5D-47CF-9BE1-FF950326E3DB/data/Media/DCIM/100APPLE
2. 通过运行以下命令下载照片:
curl -o pic_001.jpg " https://s-media-cache-ak0.pinimg.com/474x/49/25/7a/49257a4b3287b7841922ecdff855fd80.jpg "
3. 重新启动您的模拟器以查看新文件。
最简单的解决方案是在模拟器上登录 iCloud,然后使用它来传输驱动器中的任何文件,包括照片。
使用 iOS 11 和 Xcode 9,只需将照片拖放到模拟器即可。它会自动将它们导入图书馆应用程序。好简单!
以上答案都不适用于 iOS 15。
我只是打开文件应用程序并将图像拖放到那里。它会自动将图像导入照片应用程序,我可以通过我的模拟器在任何地方使用。
干杯!
确保设备正在运行。
在终端中执行以下命令:
open ~/Library/Developer/CoreSimulator/Devices/$(xcrun simctl list | grep Booted | grep -Eo '[a-zA-Z0-9]*-[a-zA-Z0-9]*-[a-zA-Z0-9]*-[a-zA-Z0-9]*-[a-zA-Z0-9]*')/data/Media/DCIM
进一步的正则表达式参考@ https://regex101.com/r/tY951n/3