Swift playgrounds with UIImage

橙三吉。 提交于 2019-11-27 17:57:31
  1. Open the .playground file in Finder.
  2. Create a folder called Resources next to it.
  3. Add any images you want to this folder.
  4. In the playground press opt-cmd-1 to open the File Inspector. You should see the playground on the right. If you don't have it selected, press cmd-1 to open the Project Navigator and click on the playground file.

  1. Under 'Resource Path' choose 'Relative To Playground'
  2. Click the folder icon underneath and choose the Resources folder created earlier.

You should now have a bundle that you can use with the standard NSImage(named:"filename_without_extension"):

Note: Because Xcode will frequently overwrite the .playground folder, I recommend using this method so the resources folder isn't getting constantly deleted and re-created.

Look at the iOS Developer Library->Playground Help and search"Resource Files" and you will find the answer

1、Open the .playground

2、Show the Project navigator by selecting View > Navigators > Show Project Navigator.

3、Drag the images to the Resources

Like follow:

I had some trouble with this also.

Unfortunately, Chris' answer didn't work for me. I suspect perhaps a later beta release of Xcode 6 may have removed this setting.

Here's a solution as of Xcode 6.0 beta 4 (6A267N) available 21st July 2014. I would guess that this corresponds to the "Inside playground" option previously. That is where the Resources folder is within the playground package itself.

Here's how to set this up.

Using Finder - or if you're like me and use the awesome Path Finder - right select and choose Show Package Contents as follows:

That reveals the packages Resources folder:

Copying the image files into that folder will do the business:

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

For Xcode 9:

  • Select Resources folder
  • Right click then "Add files to "Resources""
  • Use it like: let image = UIImage(named: "no")

As of Xcode 8 Beta 1, you can use Image Literals to import an image into an Xcode playground:

Start typing image to add an image literal:

Select (or browse for) your image:

See your image inline:

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

I'm not sure where you need to put the image to refer to it using only the name, but I got the same code to work by specifying the full path to the image, like:

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

Having to use the full path seems more complicated than it should be, but it works and it let me move on to more interesting problems.

You can find out the path of resourcePath using these commands in playground:

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

Default for me was:

/Applications/Xcode6-Beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Agents

I had difficulty getting this setup for an iOS playground, as opposed to an OS X playground. Trying to do it using bundles and relative paths makes it more complicated.

If you just want to get your hands on an image quickly, you can also just use absolute file path:

On iOS:

# iOS
let absoluteImagePath = "/absolute/path/to/image.png"
let image = UIImage(contentsOfFile: absoluteImagePath)

And on OS X

# OS X
let absoluteImagePath = "/absolute/path/to/image.png"
let image = NSImage(contentsOfFile: absoluteImagePath)

This is what worked for me on Xcode Version 6.1.1.

  1. Create Playground file under same directory as main storyboard.

  2. Open Utilities pane for Playground file, and click the right arrow in Resource Path section to add your images in that directory.

  3. Test image within Playground file.

voiger

On the iOS playground with XCode 6 beta 5 (and probably later) you can see the image inside the bundle:

  1. In the playground press Cmd+Opt+1 and click the arrow under the Resource Path (this will open Finder)
  2. Put your picture to this folder
  3. 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!)
    

Using XCode 6.3.1 and running playground in full simulator (iOS) I had to do the following:

  1. Find your .playground file in finder
  2. Right click it -> show package contents
  3. If it doesn't already exist, create a folder named Resources inside the package
  4. Add your image there

Then just instantiate with let i = UIImage(named: "filename.png")

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!