ios swift xcode uikit swift-playground

iOS Playground no muestra la vista previa de la interfaz de usuario



swift xcode (8)

Creé un patio de juegos simple con XCode 7.1 y escribí este código simple:

import UIKit import XCPlayground var str = "Hello, playground" let color = UIColor (red: 1 , green: 1 , blue: 0 , alpha: 0 ) let view = UIView() view.backgroundColor = UIColo (colorLiteralRed: 1 , green: 0 , blue: 0 , alpha: 0 ) view.frame = CGRect (x: 0 ,y: 0 ,width: 100 ,height: 100 ) let label = UILabel (frame: CGRect (x: 5 , y: 5 , width: 50 , height: 20 )) label.text = str view.addSubview(label)

Cuando se ejecuta el área de juegos, no muestra la vista previa del objeto UIKit, sino solo la información de depuración:

¿Qué estoy haciendo mal?


Abra el panel de vista previa: Ver> Editor asistente> Mostrar editor asistente

Luego en tu código:

import PlaygroundSupport PlaygroundPage.current.liveView = view

No olvides darle a tu vista un marco visible.

Ps: después de Xcode 9, puede crear un parque infantil con vista predeterminada


Además de la sintaxis, encontré otro truco para volver a mostrar la vista en vivo en mi caso (Xcode 8.2.1 Swift 3.0). También esto podría ser un error menor en Xcode. Simplemente haga clic en el botón + en la parte superior del editor asistente. Porque en algún momento su editor asistente muestra el archivo de interfaz de su archivo y se niega a mostrar automáticamente la página en vivo.


Después de crear Xcode playground para una sola vista y ejecutarlo por primera vez, no olvide activar el Editor Asistente en la esquina superior derecha para habilitar Live View.


En Xcode 8.3 sigo teniendo problemas. Lo único que funciona es cerrar Xcode y reiniciarlo. Intenté salir del simulador porque noté que está ejecutando el simulador, pero esto no solucionó el problema. Archivará un radar.

import UIKit import PlaygroundSupport let frame = CGRect(x: 0, y: 0, width: 300, height: 700) let container = UIView(frame: frame) container.backgroundColor = .red let inner = UIView(frame: CGRect(x: 100, y: 100, width: 20, height: 40)) inner.backgroundColor = .blue container.addSubview(inner) PlaygroundPage.current.liveView = container PlaygroundPage.current.needsIndefiniteExecution = true


La respuesta aceptada es una captura de pantalla, no un código en línea, y muestra cómo hacer este pre Xcode 8, así que no creo que sea una buena respuesta.

Aquí hay una respuesta actualizada para Xcode 8:

Hay varios pasos:

Necesitas importar PlaygroundSupport

import PlaygroundSupport

Debe establecer PlaygroundPage.current.needsIndefiniteExecution en true:

PlaygroundPage.current.needsIndefiniteExecution = true

Debe agregar la jerarquía de vistas que desea mostrar a liveView:

PlaygroundPage.current.liveView = container

Todo el patio podría verse así:

import UIKit import PlaygroundSupport let container = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 200)) let view = UIView(frame: CGRect(x: 0, y: 0, width: 50, height: 50)) view.backgroundColor = UIColor.red container.addSubview(view) PlaygroundPage.current.liveView = container PlaygroundPage.current.needsIndefiniteExecution = true

Finalmente, necesita ver la vista en vivo que acaba de crear. En mi copia de Xcode 8 (versión de lanzamiento) Si intento seleccionar el menú Ver> asistente de editor> Mostrar asistente de asistente, Xcode falla cada vez.

Tengo que pasar el mouse por el lado derecho de la pantalla en el cuadro a la derecha del código, en la línea donde creo la vista del contenedor. Veo un pequeño ícono de ojo, y si hago clic en eso, muestra la vista en vivo sin fallar.


No veo por qué necesita la vista de contenedor que requiere la respuesta anterior. Esto funciona igual de bien:

import UIKit import XCPlayground import PlaygroundSupport var str = "Hello, playground" let color = UIColor (red: 1 , green: 1 , blue: 0 , alpha: 0 ) let view = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 200)) view.backgroundColor = UIColor.red view.frame = CGRect (x: 0 ,y: 0 ,width: 200 ,height: 200 ) PlaygroundPage.current.needsIndefiniteExecution = true PlaygroundPage.current.liveView = view let label = UILabel (frame: CGRect (x: 5 , y: 5 , width: 200 , height: 20 )) label.text = str view.addSubview(label)


Para aquellos de ustedes que experimentan el problema de que el editor asistente no hace nada (para mí simplemente estaba en blanco), así es como resolví el problema.

  1. Use ese código para probar: https://.com/a/33543820/4572536 (respuesta aceptada de arriba)

  2. View -> Assistent Editor -> Assistent Editors on Bottom (o cualquier otra opción)

Este último activará Xcode para volver a dibujar la vista.

Nota: estoy compartiendo esto como una posible solución, porque para mí mi Xcode no dibujó la vista incluso después de reiniciar el sistema completo. No tengo idea de cómo reproducir ese problema, pero si te topas con él, puedes probar esta solución.


Simplemente marque Mostrar línea de tiempo en Configuración del área de juegos