我正在使用 Xcode 6 工作,试图重现在“Xcode 6 有什么新功能”会议中演示的代码。我已将图像添加到 Images.xcassets(称为 Sample),并尝试在 playground 文件中访问此图像,就像演示的那样。
我的代码如下(类似于演示):
var sample = UIImage(named: "Sample")
然而,我无法使它像演示一样正常工作。我是否遗漏了什么?
我正在使用 Xcode 6 工作,试图重现在“Xcode 6 有什么新功能”会议中演示的代码。我已将图像添加到 Images.xcassets(称为 Sample),并尝试在 playground 文件中访问此图像,就像演示的那样。
我的代码如下(类似于演示):
var sample = UIImage(named: "Sample")
然而,我无法使它像演示一样正常工作。我是否遗漏了什么?
请查看iOS开发人员文库->Playground Help并搜索“资源文件”,您将找到答案。
1、打开 .playground 文件。
2、通过选择 View > Navigators > Show Project Navigator 来显示项目导航器。
3、将图像拖动到 Resources 中。
如下所示:
现在你应该拥有一个bundle,可以通过标准的NSImage(named:"filename_without_extension")来使用它:
注意:因为Xcode经常会覆盖.playground文件夹,所以我建议使用这种方法,这样资源文件夹就不会被不断删除和重新创建。
我也遇到了一些问题。
不幸的是,Chris的答案对我无效。我怀疑Xcode 6的某个后期beta版本可能已经删除了此设置。
以下是截至2014年7月21日可用的Xcode 6.0 beta 4(6A267N)的解决方案。我猜这对应于先前的“内部游乐场”选项。也就是说,资源文件夹位于游乐场包本身内部。
以下是如何设置它。
使用Finder - 或者如果您像我一样使用强大的Path Finder- 右键选择并选择显示包内容,如下所示:
这将显示Resources文件夹:
将图像文件复制到该文件夹即可。
let imageNames = ["back-button", "background", "bg_top"]
let images = imageNames.map { UIImage(named: $0) }
然而,我无法像演示一样使其工作。我是不是遗漏了什么?
我不确定您需要将图像放在何处,才能仅使用名称引用它,但是我通过指定图像的完整路径来使相同的代码工作,例如:
var sample = UIImage(named: "/Users/my_user_name/Desktop/Image1234.jpg")
不得不使用完整路径似乎比应该的复杂,但它可以让我继续解决更有趣的问题。
var bundle = NSBundle.mainBundle()
var path = bundle.resourcePath
对我来说,默认设置是:
/Applications/Xcode6-Beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Agents
相对于OS X playground,我在iOS playground中设置时遇到了困难。尝试使用bundle和相对路径会使它变得更加复杂。
如果你只想快速获取图像,也可以直接使用绝对文件路径:
iOS上:
# iOS
let absoluteImagePath = "/absolute/path/to/image.png"
let image = UIImage(contentsOfFile: absoluteImagePath)
# OS X
let absoluteImagePath = "/absolute/path/to/image.png"
let image = NSImage(contentsOfFile: absoluteImagePath)
在与主要storyboard同一目录下创建Playground文件。
打开Playground文件的Utilities面板,并单击“Resource Path”部分的右箭头,将您的图像添加到该目录中。
在Playground文件中测试图象。
Access it with either
let img = UIImage(named: "logo.png", inBundle: NSBundle.mainBundle(),
compatibleWithTraitCollection: nil)
or
let path = NSBundle.mainBundle().pathForResource("logo", ofType: "png")
let img = UIImage(contentsOfFile:path)
or in Swift 4:
let path = Bundle.main.path(forResource:"logo", ofType: "png")
let img = NSImage(contentsOfFile:path!)