60

I am working with Xcode 6, and I'm trying to recreate the code demoed during session 401 "What's new in Xcode 6". I've added an image to Images.xcassets (called Sample) and within the playground file I'm trying to access this image, as demoed.

My code is as follows (like the demo):

var sample = UIImage(named: "Sample")

However, I can't get it to work like the demo. Am I missing something?

4

12 回答 12

112

查看iOS Developer Library-> Playground Help并搜索“Resource Files”即可找到答案

1、打开.playground

2、通过选择视图 > 导航器 > 显示项目导航器来显示项目导航器。

3、将图片拖到资源中

像下面这样:

在此处输入图像描述

于 2015-06-11T03:26:23.537 回答
68
  1. 在 Finder 中打开 .playground 文件。
  2. 在它旁边创建一个名为 Resources 的文件夹。
  3. 将您想要的任何图像添加到此文件夹。
  4. 在操场上按 opt-cmd-1 打开文件检查器。你应该看到右边的操场。如果您没有选择它,请按 cmd-1 打开 Project Navigator 并单击 Playground 文件。

文件检查器

  1. 在“资源路径”下选择“相对于游乐场”
  2. 单击下面的文件夹图标,然后选择之前创建的 Resources 文件夹。

您现在应该有一个可以与标准 NSImage 一起使用的包(命名为:“filename_without_extension”):

工作 nsbundle 映像

注意:因为 Xcode 会经常覆盖 .playground 文件夹,所以我建议使用这种方法,这样资源文件夹就不会被不断地删除和重新创建。

于 2014-06-08T18:33:39.360 回答
32

我也遇到了一些麻烦。

不幸的是,克里斯的回答对我不起作用。我怀疑 Xcode 6 的后续 beta 版本可能已经删除了这个设置。

这是 2014 年 7 月 21 日可用的 Xcode 6.0 beta 4 (6A267N) 的解决方案。我猜这对应于之前的“Inside playground”选项。这就是 Playground 包中的 Resources 文件夹所在的位置。

以下是如何设置它。

使用 Finder - 或者如果你像我一样使用很棒的路径查找器- 右键选择并选择Show Package Contents,如下所示:

在此处输入图像描述

这揭示了包资源文件夹:

在此处输入图像描述

将图像文件复制到该文件夹​​中即可:

let imageNames = ["back-button", "background", "bg_top"]
let images = imageNames.map { UIImage(named: $0) }

在此处输入图像描述

于 2014-07-31T11:20:26.530 回答
13

对于 Xcode 9:

  • 选择资源文件夹
  • 右键单击然后“将文件添加到”资源“
  • 像这样使用它: let image = UIImage(named: "no")

在此处输入图像描述

于 2017-12-27T05:41:58.207 回答
4

从 Xcode 8 Beta 1 开始,您可以使用 Image Literals 将图像导入 Xcode Playground:

开始输入image以添加图像文字:

Swift 图像文字

选择(或浏览)您的图像:

图片

内联查看您的图像:

排队

于 2016-06-13T22:08:50.150 回答
3

我很难为 iOS 操场设置这个设置,而不是 OS X 操场。尝试使用捆绑包和相对路径来实现它会使其变得更加复杂。

如果您只想快速获取图像,也可以使用绝对文件路径:

在 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)
于 2014-06-17T04:26:45.587 回答
3

您可以在 Playground 中使用以下命令找出 resourcePath 的路径:

var bundle = NSBundle.mainBundle()
var path = bundle.resourcePath

我的默认设置是:

/Applications/Xcode6-Beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Agents
于 2014-06-06T14:31:00.680 回答
3

但是,我无法让它像演示一样工作。我错过了什么吗?

我不确定您需要将图像放在哪里才能仅使用名称来引用它,但是通过指定图像的完整路径,我得到了相同的代码,例如:

var sample = UIImage(named: "/Users/my_user_name/Desktop/Image1234.jpg")

必须使用完整路径似乎比它应该的要复杂,但它有效,它让我继续处理更有趣的问题。

于 2014-06-05T20:35:06.450 回答
2

在带有 XCode 6 beta 5(可能更高版本)的 iOS 操场上,您可以在包中看到图像:

  1. 在操场上按 Cmd+Opt+1 并单击资源路径下的箭头(这将打开 Finder)
  2. 把你的照片放到这个文件夹
  3. 使用任一访问它

    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!)
    
于 2014-09-09T17:01:41.183 回答
2

这就是在 Xcode 版本 6.1.1 上对我有用的方法。

  1. 在与主故事板相同的目录下创建 Playground 文件。

    文件夹结构

  2. 打开 Playground 文件的实用程序窗格,然后单击部分中的右箭头Resource Path将图像添加到该目录中。

    游乐场的资源路径

  3. Playground 文件中的测试图像。

    结果

于 2015-02-10T21:58:46.500 回答
1

使用 XCode 6.3.1 并在完整的模拟器 (iOS) 中运行 Playground,我必须执行以下操作:

  1. 在 finder 中找到您的 .playground 文件
  2. 右键单击它-> 显示包内容
  3. 如果它不存在,请在包内创建一个名为 Resources 的文件夹
  4. 在那里添加您的图像

然后只需实例化 let i = UIImage(named: "filename.png")

于 2015-05-28T00:42:27.330 回答
0

我不知道为什么它不能以简单的方式处理 PDF 图像。

我必须添加这个扩展来将 PDF 图像加载到我的 Playground 中:

extension UIImage {

    static func fromPDF(_ url: URL) -> UIImage? {
        var image: UIImage?
        guard
            let doc  = CGPDFDocument(url as CFURL),
            let page = doc .page(at: 1)
        else { return nil }

        let pageRect = page.getBoxRect(.mediaBox)
        let renderer = UIGraphicsImageRenderer(size: pageRect.size)

        image = renderer.image { ctx in
            UIColor.clear.set()
            ctx.fill(pageRect)
            ctx.cgContext.translateBy(x: 0.0, y: pageRect.size.height)
            ctx.cgContext.scaleBy(x: 1.0, y: -1.0)
            ctx.cgContext.drawPDFPage(page)
        }
        return image
    }
}

// Given the file "myImage.pdf" was added to your Playground's Resources folder.
let image = UIImage.fromPDF(#fileLiteral(resourceName: "myImage.pdf"))

它基于此:https ://developer.apple.com/forums/thread/90990

于 2021-04-16T12:36:18.753 回答