UIImage的Swift游乐场
我正在使用Xcode 6,并且正在尝试在会话401“Xcode 6中的新增function”中重新演示代码。 我已经添加了Images.xcassets图像(称为示例),并在操场文件中试图访问此图像,演示。
我的代码如下(如演示):
var sample = UIImage(named: "Sample")
但是,我不能像演示一样工作。 我错过了什么吗?
- 在Finder中打开.playground文件。
- 在旁边创build一个名为Resources的文件夹。
- 添加你想要的任何图像到这个文件夹。
- 在操场上按下opt-cmd-1打开File Inspector。 你应该看到右边的操场。 如果您没有select它,请按cmd-1打开“项目导航器”,然后单击操场文件。
- 在“资源path”下select“相对于游乐场”
- 点击下面的文件夹图标,然后select之前创build的资源文件夹。
你现在应该有一个可以和标准NSImage一起使用的bundle(名字叫“filename_without_extension”):
注意:因为Xcode会经常覆盖.playground文件夹,所以我build议使用这个方法,这样资源文件夹就不会不断的被删除并重新创build。
看看iOS Developer Library-> Playground Help并search“资源文件”,你会发现答案
1,打开.playground
2,通过select视图>导航器>显示项目导航器来显示项目导航器。
3,将图像拖到资源
如下所示:
我也遇到了一些麻烦。
不幸的是,克里斯的答案不适合我。 我怀疑Xcode 6以后的beta版本可能已经删除了这个设置。
以下是2014年7月21日发布的Xcode 6.0 beta 4(6A267N)的解决scheme。我猜想这个对应于之前的“Inside playground”选项。 这就是资源文件夹在游乐场包内的地方。
这是如何设置的。
使用Finder – 或者如果你像我一样使用超棒的Path Finder – 右键select并selectShow Package Contents ,如下所示:
这揭示了包资源文件夹:
将图像文件复制到该文件夹将执行业务:
let imageNames = ["back-button", "background", "bg_top"] let images = imageNames.map { UIImage(named: $0) }
但是,我不能像演示一样工作。 我错过了什么吗?
我不知道你需要把图像引用到它的名字,但是我通过指定图像的完整path来获得相同的代码,例如:
var sample = UIImage(named: "/Users/my_user_name/Desktop/Image1234.jpg")
不得不使用完整的path似乎比它应该更复杂,但它的工作原理,让我转移到更有趣的问题。
您可以在操场上使用这些命令找出resourcePath的path:
var bundle = NSBundle.mainBundle() var path = bundle.resourcePath
我的默认是:
/Applications/Xcode6-Beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Agents
我很难得到这个设置的iOS操场,而不是OS X操场。 试图用捆绑和相对path来做这件事情会变得更加复杂。
如果您只想快速获取图像,也可以使用绝对文件path:
在iOS上:
# iOS let absoluteImagePath = "/absolute/path/to/image.png" let image = UIImage(contentsOfFile: absoluteImagePath)
并在OS X上
# OS X let absoluteImagePath = "/absolute/path/to/image.png" let image = NSImage(contentsOfFile: absoluteImagePath)
从Xcode 8 Beta 1开始,您可以使用图像文字将图像导入到Xcode游乐场:
开始inputimage
来添加图片文字:
select(或浏览)您的图像:
在线查看您的图片:
这是Xcode版本6.1.1上的工作。
-
在主故事板的同一目录下创buildPlayground文件。
-
打开Playground文件的“实用工具”窗格,然后单击“
Resource Path
部分中的右箭头以在该目录中添加图像。 -
在Playground文件中testing图像。
使用XCode 6.3.1并在完全模拟器(iOS)中运行的操场我必须做到以下几点:
- 在finder中find你的.playground文件
- 右键单击它 – >显示包内容
- 如果它尚不存在,请在包中创build一个名为Resources的文件夹
- 在那里添加你的图像
然后用let i = UIImage(named: "filename.png")
实例化
在XCode 6 beta 5的iOS操作系统上(可能更高版本),您可以在软件包中看到图像:
- 在操场上按Cmd + Opt + 1并点击资源path下的箭头(这将打开Finder)
- 把你的照片到这个文件夹
-
访问它与任一
let img = UIImage(named: "logo.png", inBundle: NSBundle.mainBundle(), compatibleWithTraitCollection: nil)
要么
let path = NSBundle.mainBundle().pathForResource("logo", ofType: "png") let img = UIImage(contentsOfFile:path)
或者在Swift 4:
let path = Bundle.main.path(forResource:"logo", ofType: "png") let img = NSImage(contentsOfFile:path!)