Hola, soy Miguel y esta vez les traigo un nuevo tutorial.
¿Ha empezado a utilizar la barra táctil y ha pensado «por qué demonios necesito esto en mi computadora»? Bueno, ¡ahora le hemos encontrado alguna utilidad! La barra táctil se lanzó en 2016 y, desde entonces, los usuarios y desarrolladores han intentado innovar en su uso. Hoy, veremos una manera simple y rápida para permitir que las aplicaciones SpriteKit se utilicen en nuestra querida barra táctil.
Nota: Para este tutorial, necesitará Xcode versión 8.1 o posterior y macOS 10.12.2 o posterior.
En primer lugar, tenemos que prestar atención al tipo de proyecto que estamos creando: una barra táctil solo existe en MacBooks, por lo que debemos crear un proyecto macOS para facilitar nuestro trabajo.
Una vez creado, podemos empezar a codificar. Si su MacBook no tiene una barra táctil física, puede usar el simulador de Xcode haciendo clic en Ventana> Touch Bar> Mostrar Touch Bar.
Índice
¿Cómo puedo soportar la Touch Bar?
Cuando queremos utilizar elementos proporcionados por el sistema y sus funciones, como vistas de tabla y campos de texto, adoptamos sus delegar Protocolos. Bueno, para la barra táctil no sería diferente, ¿verdad? En esta aplicación, vamos a implementar dos protocolos: NSTouchBarProvider y NSTouchBarDelegate.
En este proyecto específicamente, lo estamos haciendo en nuestro AppDelegate, pero esto no es una regla. Ir AppDelegate.swift y agregue lo siguiente al final del archivo:
extension AppDelegate: NSTouchBarDelegate, NSTouchBarProvider { var touchBar: NSTouchBar? { let bar = NSTouchBar() bar.delegate = self bar.defaultItemIdentifiers = [.touchBarView] return bar } }
Aquí estarás declarando touchBar, que es necesario para el protocolo NSTouchBarProvider, responsable de su vista para instanciar una barra táctil. Tenga en cuenta que aquí también:
- Creo un touchBar.
- Establecer el delegado.
- Establezca los identificadores de elementos predeterminados, que indican lo que se mostrará en la barra táctil.
Sin embargo, todavía no creamos un identificador de artículo predeterminado adecuado. En el mismo archivo, agregue esto al código:
extension NSTouchBarItem.Identifier static let touchBarView = NSTouchBarItem.Identifier(“com.spriteKit.touchBar”)
La cadena utilizada para declarar el identificador puede ser cualquier cosa, solo recuerde no crear dos identificadores con la misma cadena.
Si compila y ejecuta ahora, verá que la barra táctil todavía está vacía, y eso se debe a que no hemos creado ninguna instancia allí, y eso es lo que vamos a hacer ahora.
Crea una variable llamada touchBarView del tipo TouchBarView dentro de tu AppDelegate.
- Dentro de NSTouchBarDelegate y NSTouchBarProvider extensión, debajo de la variable NSTouchBar, escriba lo siguiente:
func touchBar(_ touchBar: NSTouchBar, makeItemForIdentifier identifier: NSTouchBarItem.Identifier) -> NSTouchBarItem? { switch identifier { case NSTouchBarItem.Identifier.touchBarView: let item = NSCustomTouchBarItem(identifier: .touchBarView) if touchBarView == nil { touchBarView = TouchBarView() } item.viewController = touchBarView return item default: return nil } }
Aquí crearemos elementos de la barra táctil de acuerdo con sus identificadores, y usamos un interruptor para actuar de manera diferente con cada uno de ellos. Para hacer eso, instanciamos un NSCustomTouchBarItem y agregue los elementos que queremos que muestre. Dado que nuestro objetivo es usar una escena SpriteKit, primero queremos que presente una Ver controlador.
Agregar un controlador de vista a la barra táctil
Al agregar el código anterior, notó que no tenemos la clase “TouchBarView”, ¡así que agreguemos! Cree un nuevo archivo Swift y agregue lo siguiente:
import Cocoa import Foundation import SpriteKit class TouchBarView: NSViewController { override func viewDidLoad() { super.viewDidLoad() } override func loadView() { } override func viewDidAppear() { super.viewDidAppear() } }
Este es un controlador de vista básico con sus métodos básicos, y eso es lo que ahora presenta la barra táctil. Si queremos tener una escena de SpriteKit, primero debemos crear una SKView variable con el tamaño de la barra táctil, así que agregue esto dentro de la clase:
private lazy var gameView: SKView = { let view = SKView(frame: self.view.bounds) view.autoresizingMask = [.width, .height] return view } ()
Ahora que tenemos un SKView, ¡usémoslo! Agrega el siguiente código dentro loadView () método para agregar el SKView a nuestra vista existente:
view = NSView() view.addSubview(gameView)
Si ejecuta el proyecto ahora, verá que tenemos buenas noticias. Ahora la barra táctil parece ser blanca, y eso sucede porque ahora muestra nuestro SKView 🙂
Presentamos ahora un SKScene allí, por lo tanto, podremos agregar lo que queramos a nuestra barra táctil. Para hacer eso, agregue lo siguiente a nuestro viewDidAppear ():
override func viewDidAppear() { super.viewDidAppear() if gameView.scene == nil { let scene = SKScene(fileNamed: "StartScene") as? StartScene scene!.scaleMode = .aspectFill gameView.presentScene(scene) } }
Todavía no tenemos la clase StartScene, y eso es lo que vamos a hacer ahora.
Conectarse a SKScene
¡Estamos casi alli! Ahora, tenemos que crear el SKScene que vamos a presentar.
Vaya a su archivo de escena (.sks) y ajuste el ancho a 690 y la altura a 30.
¡Y una cosa más con el archivo de escena! Escribir StartScene en el campo Clase personalizada. Haciendo eso, habremos definido el tamaño de la escena y la clase que mostrará.
¡Finalmente, llegamos al paso final! Ahora deberíamos crear la clase que definimos como personalizada en nuestro archivo .sks, así que hagámoslo. Cree un nuevo archivo Swift y agregue el siguiente código:
import Foundation import SpriteKit class StartScene: SKScene { override func didMove(to view: SKView) { let backgroundNode = SKSpriteNode(color: NSColor(red: 95/255, green: 75/255, blue: 139/255, alpha: 1.0), size: view.bounds.size) let labelNode = SKLabelNode(text: “Congratulations! ;]”) labelNode.position = CGPoint(x: 0, y: -5) labelNode.fontSize = 16 labelNode.fontColor = NSColor(red: 230/255, green: 154/255, blue: 141/255, alpha: 1.0) addChild(backgroundNode) addChild(labelNode) } }
Esto instanciará nuestro SKScene y agregue dos nodos para demostrar que podemos usarlo en nuestra barra táctil tal como lo usamos en otros dispositivos. Si compila y ejecuta el proyecto, ahora debería verse así.
Nuestro objetivo inicial era conectar la barra táctil con una aplicación SpriteKit, por lo que no avanzaremos más en la implementación. Sin embargo, si quieres aventurarte, aquí tienes un ejemplo simple de lo que es posible hacer, disponible para descargar. aquí:
¿A dónde ir desde aquí?
En este tutorial, aprendió lo siguiente:
- Cómo configurar su aplicación para que sea compatible con la barra táctil.
- De que manera conectar la barra táctil con un controlador de vista personalizado.
- Cómo conectar su controlador de vista personalizado a un SKScene.
Si desea ir más lejos en la aplicación, puede implementar funciones en su SKScene para comprender mejor cómo funciona la pantalla de la barra táctil y sus limitaciones. Además, te desafío a crear una aplicación interactiva usando la barra táctil y una aplicación para Mac.
Gracias por leer.
Añadir comentario