Swift playgrounds con UIImage

Estoy trabajando con Xcode 6, y estoy tratando de recrear el código de demostración durante la session 401 "Novedades de Xcode 6". Agregué una image a Images.xcassets (denominada Sample) y dentro del file del área de juegos estoy tratando de acceder a esta image, como demostrada.

Mi código es el siguiente (como la demostración):

var sample = UIImage(named: "Sample") 

Sin embargo, no puedo hacer que funcione como la demo. ¿Me estoy perdiendo de algo?

  1. Abra el file .playground en Finder.
  2. Cree una carpeta llamada Recursos al lado.
  3. Agregue las imágenes que desee a esta carpeta.
  4. En el área de juegos presione opte-cmd-1 para abrir el Inspector de files. Deberías ver el patio de juegos a la derecha. Si no lo tiene seleccionado, presione cmd-1 para abrir Project Navigator y click el file del área de juegos.

Inspector de archivos

  1. En 'Recurso de ruta', elija 'Relativo al patio de recreo'
  2. Haga clic en el ícono de la carpeta debajo y elija la carpeta Recursos creada anteriormente.

Ahora debería tener un package que pueda usar con el NSImage estándar (llamado: "nombrefile_con_extensión"):

Imagen nsbundle de trabajo

Nota: Como Xcode sobrescribirá frecuentemente la carpeta .playground, recomiendo usar este método para que la carpeta de resources no se borre y vuelva a crear constantemente.

Mire la Biblioteca de desarrolladores de iOS-> Ayuda del patio y busque "Archivos de resources" y encontrará la respuesta

1, abre el .playground

2, Mostrar el browser del proyecto seleccionando Ver> Navegadores> Mostrar Navegador de proyectos.

3, arrastre las imágenes a los resources

Me gusta seguir:

introduzca la descripción de la imagen aquí

Tuve algunos problemas con esto también.

Desafortunadamente, la respuesta de Chris no funcionó para mí. Sospecho que quizás una versión beta posterior de Xcode 6 haya eliminado esta configuration.

Aquí hay una solución a partir de Xcode 6.0 beta 4 (6A267N) disponible el 21 de julio de 2014. Supongo que esto corresponde a la opción "Inside playground" anteriormente. Ahí es donde la carpeta Recursos está dentro del package de juegos en sí.

A continuación, se explica cómo configurar esto.

Usando Finder – o si eres como yo y usas el increíble Buscador de routes – selecciona derecha y elige Mostrar contenido del package de la siguiente manera:

introduzca la descripción de la imagen aquí

Eso revela la carpeta de resources de los packages:

introduzca la descripción de la imagen aquí

La copy de los files de image en esa carpeta hará el negocio:

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

introduzca la descripción de la imagen aquí

Sin embargo, no puedo hacer que funcione como la demo. ¿Me estoy perdiendo de algo?

No estoy seguro de dónde necesitas poner la image para referirse a ella usando solo el nombre, pero obtuve el mismo código para trabajar especificando la ruta completa de la image, como:

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

Tener que usar la ruta completa parece más complicado de lo que debería ser, pero funciona y me deja pasar a problemas más interesantes.

Puede encontrar la ruta de recurso Path usando estos commands en el patio de recreo:

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

Pnetworkingeterminado para mí fue:

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

Tuve dificultades para get esta configuration para un patio iOS, en lugar de un patio OS X. Tratar de hacerlo usando packages y routes relativas lo hace más complicado.

Si solo desea get rápidamente una image, también puede usar la ruta absoluta del file:

En iOS:

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

Y en OS X

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

A partir de Xcode 8 Beta 1, puede usar Image Literals para importar una image a un parque infantil Xcode:

Comienza a escribir la image para agregar un literal de image:

Swift Image Literal

Seleccione (o busque) su image:

Imagen

Vea su image en línea:

En línea

Esto es lo que funcionó para mí en Xcode Versión 6.1.1.

  1. Cree un file Playground en el mismo directory que el guión gráfico principal.

    Estructura de carpetas

  2. Abra el panel Utilidades para el file Playground y click la flecha derecha en la sección Resource Path acceso para agregar sus imágenes en ese directory.

    Ruta de recursos para el patio de recreo

  3. Pruebe la image dentro del file Playground.

    Resultado

Usando XCode 6.3.1 y ejecutando patio en simulador completo (iOS), tuve que hacer lo siguiente:

  1. Encuentra tu file .playground en buscador
  2. Haga clic derecho sobre él -> mostrar contenido del package
  3. Si aún no existe, cree una carpeta llamada Recursos dentro del package
  4. Añade tu image allí

Luego, instálalo con let i = UIImage(named: "filename.png")

En el patio iOS con XCode 6 beta 5 (y probablemente más adelante), puedes ver la image dentro del package:

  1. En el patio de recreo, presione Cmd + Opt + 1 y click la flecha debajo de la Ruta del Recurso (esto abrirá el Finder)
  2. Pon tu foto en esta carpeta
  3. Accedé con cualquiera

     let img = UIImage(named: "logo.png", inBundle: NSBundle.mainBundle(), compatibleWithTraitCollection: nil) 

    o

     let path = NSBundle.mainBundle().pathForResource("logo", ofType: "png") let img = UIImage(contentsOfFile:path) 

    o en Swift 4:

     let path = Bundle.main.path(forResource:"logo", ofType: "png") let img = NSImage(contentsOfFile:path!)