¿Quieres aprender a crear Apps para el Apple Watch Gratis?
Con este Curso Gratis para crear Apps con WatchKit , descubrirás cómo crear aplicaciones para el Apple Watch.
Durante varías semanas, iremos aprendiendo diferentes cosas sobre el proceso de crear Watch Apps.
Empezaremos por conocer el conjunto de clases que podemos usar.
Y claro, antes de poder usarlas, necesitamos conocerlas, saber que herramientas disponemos.
El Framework WatchKit
Para crear aplicaciones para el nuevo reloj de Apple hay que conocer su Framework.
¿No sabes que es un Framework?
Un Framework es un conjunto de clases, o lo que es lo mismo, un gran saco que contiene un montón de objetos que podremos usar.
Por ejemplo dentro del Framework UIKit estarían los botones, las etiquetas, las vistas, etc.
UIKit
UIButton – UILabel – UIViewController, etc.
Entonces dentro del Framework WatchKit estarán todos los objetos y Clases que necesitamos para crear nuestras Watch Apps 😉
Un Framework de 38mm
Sí, estamos hablando de un pequeño Framework que nos ayudará a crear grandes cosas, para una pequeña pantalla.
Desarrolladores y Desarrolladoras, con todos ustedes: el Framework WatchKit.
Hace unos días ya os hable de lo fundamental para estar al tanto de como crear Apps para el Apple Watch.
En esta entrada vamos a descubrir la clase WKInterfaceController, y sus métodos y propiedades más importantes.
Y claro, es muy fácil saber si alguna clase pertenece a este Framework, como Apple hace siempre, usa prefijos para identificar sus Frameworks, en este caso han puesto el prefijo WK.
¿Adivinas que significa?
Con Objective-C y con Swift
El Framework fue creado para ambos lenguajes, por lo que nunca debes asociar WatchKit con Swift.
Sin embargo para programar aplicaciones para el Apple Watch vamos a necesitar Xcode 6.2 o superior.
Es a partir de esta versión dónde vamos a encontrar la funcionalidad que nos permitirá crear las Apps para el reloj.
WKInterfaceController
Esta es la clase principal de la interfaz de nuestra aplicación.
Es el objeto que nos va a permitir usar controladores de vista, aunque en este caso Apple prefiere llamarlos: controladores de interfaces.
Entonces como hemos dicho, WKInterfaceController es un controlador de vista, en este caso de interfaz, es similar a UIViewController en UIKit.
Inicio
Cuándo se inicia una aplicación de WatchKit, el sistema carga la interfaz principal, y luego lanza la extensión de WatchKit.
¡¡¡Un momento!!! ¿Que extensión?
Bien, vamos a explicarlo.
La logica de la aplicación, es decir el código del controlador de interfaz, se ejecuta de forma local en el iPhone.
Cuándo algo cambia, es decir, si alguno de los valores de los objetos de la interfaz cambia, el sistema envía información al Apple Watch para realizar los cambios correspondientes en la interfaz.
Es decir, que tenemos dos paquetes separados, por un lado una aplicación WatchKit que ejecuta el Apple Watch, y por otro una extensión que estará en el iPhone y que gestiona la interacción del usuario y la lógica misma de la App.
Entonces cuándo carga la aplicación del reloj, se carga la interfaz principal y la extensión en el iPhone.
Inicializar los controladores
La extensión llamará a ciertas funciones que inicializarán nuestros controladores y los objetos que este contenga.
En estos métodos o funciones podremos inicializar clases o instancias asociadas con nuestro controlador.
Es decir, por medio de estos métodos podremos inicializar variables, datos de carga, o configurar los elementos de la interfaz.
Veamos estos métodos.
init
Se trata del inicializador designado.
Devuelve un objeto de controlador de interfaz inicializado.
awakeWithContext
Inicializa el controlador y además los objetos de contexto que estén dentro del mismo.
Esta función se llama en tiempo de inicialización, y nos permitirá inicializar el contexto de nuestra interfaz, aquí es dónde podemos configurar títulos de botones y etiquetas, datos de tablas, etc.
Eventos de Activación
¿Recordáis viewDidLoad? ¿O quizá viewWillAppear? o
Cuándo la interfaz está a punto de hacerse visible, el sistema llama al método willActivate.
willActivate
Este método nos permite saber cuándo la interfaz está a punto de hacerse visible.
Podemos usarlo para hacer actualizaciones a nuestro controlador y sus elementos.
No podemos usar este método para inicializar la interfaz, solamente lo usaremos para actualizar datos o hacer cambios.
didDeactivate
Se llama cuándo el controlador de interfaz no está en pantalla.
O lo que es lo mismo, cuándo el usuario bloquea el Watch.
Es la función que usaremos para realizar cualquier operación de limpieza con nuestros objetos.
Apple pone los ejemplos de invalidar temporizadores, o guardar información de estado relacionada con la aplicación.
Debemos tener en cuenta que deben ser tareas que terminen de forma rápida.
Navegar entre Controladores
En UIKit y cuándo creábamos aplicaciones para el iPhone o el iPad, teníamos las clases:
UINavigationController
UITabBarController
UIPageController
Y otras tantas más.
Pero ya hemos dicho que WatchKit es un Framework pequeño, que nos va a permitir hacer grandes cosas, para una pequeña pantalla.
Así que solamente contamos con 3 tipos de navegación entre controladores
Navegación Jerárquica
Las vistas se van apilando una encima de otra.
Es muy parecido a la clase UINavigationController de UIKit.
Debemos tener en cuenta que el primer controlador que llama a otro, será el rootViewController o controlador principal.
pushControllerWithName ( _:context: )
Usaremos este método para añadir un nuevo controlador de vista.
Se realizará una transición que presentará la nueva vista.
Este método requiere dos parámetros:
name
Se refiere al nombre del controlador que queramos mostrar.
Debemos poner este identificador en el Storyboard, dentro del inspector de atributos del controlador de vista.
context
Datos de contexto que queramos pasar a la nueva vista.
Este parámetro puede ser nil, aunque no se recomienda.
popcontroller
Con este método eliminamos la vista inmediatamente presentada y volvemos a la anterior.
popToRootViewController
Mediante este método volvemos a nuestro controlador principal o RootViewController.
De esta forma inicializamos nuestra pila de navegación a su controlador inicial.
Navegación mediante Ventanas Emergentes
Añadiremos vistas modales a las existentes.
presentControllerWithName ( _ name : String , context context : AnyObject ?)
Mediante este método presentaremos una sola vista modal.
Requiere dos parámetros:
name
Se refiere al nombre del controlador que queramos mostrar.
Debemos poner este identificador en el Storyboard, dentro del inspector de atributos del controlador de vista.
context
Datos de contexto que queramos pasar a la nueva vista.
Este parámetro puede ser nil, aunque no se recomienda.
Las vistas que presentemos de este modo, lo harán deslizándose de abajo hacía arriba.
presentControllerWithNames(_ names: [AnyObject], contexts contexts: [AnyObject]?)
Podemos presentar «grupos de vistas» que serán añadidas como un grupo de vistas paginadas.
Requiere dos parámetros:
names
Es un array de strings, dónde cada elemento será el nombre de un controlador de interfaz.
El orden de los controladores, será el orden del array.
contexts
Array de objetos de contexto, con los valores que queramos pasar al nuevo controlador de interfaz.
Este parámetro puede ser nil, aunque no se recomienda.
Quitar Vistas
Adivina como quitamos las vistas presentadas de forma modal.
¡Estás en lo cierto!
Con el método dismissController ()
Desde el Storyboard también podremos hacer este tipo de navegación, seleccionado transición modal, como ya hacíamos en UIKit.
Navegación por Páginas
Similar a la clase UIPageController en UIKIt, deslizando el dedo de forma horizontal, pasaremos de una vista a otra.
Lo haremos desde el storyboard, no podemos hacerlo en tiempo de ejecución.
Conectaremos un controlador con otro con la tecla «Control» pulsada, y crearemos una conexión «next page».
reloadRootControllersWithNames(_ names: [AnyObject], contexts contexts: [AnyObject]?)
Como te he dicho, no podemos crear controladores de interfaz en tiempo de ejecución si estamos usando un controlador de navegación por páginas.
Pero si podemos recargar todas y cada una de las páginas que tengamos dentro de nuestra paginación.
De forma que podemos configurar que páginas queremos mostrar, o cual queremos eliminar.
Requiere dos parámetros:
names
Array de strings, dónde cada elemento es el nombre de un controlador de interfaz.
El orden de los controladores, será el orden que demos en nuestro array.
contexts
Array de objetos de contexto, con los valores que queramos pasar al nuevo controlador de interfaz.
Este parámetro puede ser nil, aunque no se recomienda.
becomeCurrentPage()
A través de este método podemos hacer que un determinado controlador, se convierta en la página actual de una interfaz basada en páginas.
Veremos el uso de este método más adelante.
Segues
Por último comentarte que podemos usar segues para cambiar de una vista a otra en el Storyboard.
Tenemos una función similar a storyBoardWithSegue que es contextForSegueWithIdentifier, que requiere el identificador del controlador que va a ser llamado.
Opciones de Configuración del Controlador de Interfaz
En Interface Builder, es decir en nuestro storyboard, podemos configurar ciertos elementos de nuestro Controlador de Interfaz.
Esto lo haremos dentro del Inspector, en un apartado llamado «Inspector de Atributos» o más comúnmente conocido como «el escudito» 😉
A continuación puedes ver cada uno de estos atributos y su descripción.
Identifier
Se refiere al nombre de nuestro Controlador.
Esto es importante, pues por este nombre, por este identificador, es como vamos a llamar a esta vista desde nuestro código.
Title
El titulo de nuestro Controlador de Interfaz.
Podemos establecer este atributo mediante programación con el método setTitle:
Is Initial Controller
Indica si este Controlador es el controlador de inicio.
Es decir, si será la primera vista que veremos cuándo arranque la App.
Hides When Loading
Oculta el contenido del controlador mientras se carga la interfaz.
El contenido será mostrado después de que se llame y sea devuelto el método willActivate.
Background
La imagen o el Fondo de nuestra interfaz.
Mode
El modo como presentaremos la imagen o nuestro fondo.
Animate
Si queremos que nuestra imagen de fondo se presente de forma animada.
Color
Color de fondo.
Insets
La cantidad espacio ( en puntos) que existirá entre los bordes del controlador y el contenido.
Podemos hacer una selección personalizada de los valores en la parte superior, inferior, y bordes izquierdo y derecho.
Spacing
Espacio ( en puntos ) que de forma adicional se incluirá para separar elementos de la interfaz.
Llegó la hora
Pues sí, llegó la hora de dejarlo por el momento.
En esta entrada hemos empezado a ver el Framework de WatchKit.
Sin duda nos esperan unas semanas apasionantes con este Curso Gratis para crear Apps con WatchKit
Dónde en cada entrada te enseñaré nuevas cosas para que puedas crear aplicaciones para el Apple Watch.
De momento empezamos a conocer el Framework, teoría que debemos saber, y quizá hasta memorizar.
Y después pasaremos a realizar ejemplos prácticos.
De esta forma dominarás esta materia, y podrás crear increíbles aplicaciones para el Apple Watch.
Y lo mejor de todo, de forma completamente gratuita.
1 Comment