martes, 30 de diciembre de 2014

Objetos de Interfaz

La aplicación WatchKit utiliza objetos de interfaz para interactuar con la interfaz. 

Un objeto de Interface es una instancia de la clase WKInterfaceObject, o más específicamente una de sus subclases. WatchKit ofrece objetos de interfaz para la mayoría de los elementos visuales. Objetos de interfaz no son vistas

Son objetos proxy que comunican con las views utilizadas en la UI del Apple Watch.


CREACIÓN DE UN OBJETO DE INTERFAZ

Puede crear objetos de interfaz y conectar a los elementos correspondientes en el storyboard.

Nunca realice alloc / init de los objetos. Durante la inicialización del objeto, WatchKit crea los objetos de la interfaz para los outlets conectados automáticamente.

Al añadir propiedades declaradas para el objeto interfaz, definir la clase con el tipo adecuado e incluir la palabra clave IBOutlet en la declaración. 

Por ejemplo:



@interface PantallaController()
@property (weak, nonatomic) IBOutlet WKInterfaceLabel* label;
@end


Conecte cada propiedad declarada en el interface controller al correspondiente elemento del storyboard. Control-drag desde un elemento en el storyboard a la definición de la propiedad en la interfaz de la clase para crear un outlet.


CONFIGURAR LA INTERFAZ EN TIEMPO DE DISEÑO

En tiempo de diseño, usar Xcode para configurar la apariencia de los elementos visuales en el storyboard. Puede cambiar el texto, color y fuente de un WKInterfaceLabel objeto.


CONFIGURAR LA INTERFAZ EN TIEMPO DE EJECUCION

En el código de WatchKit extension, usted actualiza la interfaz de usuario ejecutando métodos de alguna referencia de un objeto de interfaz. 

Un controlador de interfaz puede cambiar la configuración de sus objetos sólo mientras está activo, que incluye el tiempo de inicialización. 

Llamar a los métodos init, awakeWithContext: y willActivate para asignar datos a las etiquetas, imágenes y otros objetos a la interfaz de usuario. 

En tiempo de inicialización, es importante dejar que WatchKit inicializar el interface controller antes de hacer cualquier otra acción. Los métodos de inicialización de WKInterfaceController es donde WatchKit crea objetos de interfaz de la aplicación. Por lo que llamar primero a la implementación super.

Swift

- (instancetype)init {



  • // Primero llamar al método super
  • self = [super init];
  • if (self){
  • // Ahora es seguro utilizar los objetos de la interfaz
  • [self.etiqueta setText:@"Texto etiqueta:"];
  • }
  • return self;
  • }

Objective-C
  • override init {
  • // Primero llamar al método super
  • super.init;

  • // Ahora es seguro utilizar los objetos de la interfaz
  • label.setText("Hello New World");
  • }

Para mejorar el rendimiento y la vida de la batería, WatchKit framework optimiza cualquier intento de establecer los valores de los objetos de interfaz en la aplicación. Siempre que sitúe los valores de uno o más objetos de interfaz en la misma iteración,  los nuevos valores se unen para transmitir a Apple Watch los valores en una sola llamada.


RESPONDER A LAS INTERACCIONES DEL USUARIO

Utilizar buttons, switches y otros controles para indicar cambios en la aplicación. Cuando se pulsa un botón o el valor de otros cambias de control, WatchKit llama al método acción asociado en el controlador de interfaz. Cada tipo de objeto tiene un formato requerido.  Cambie el nombre de los métodos de acción a algo apropiado para su aplicación.

Objeto
Método Acción
Button
- (IBAction)buttonAction
Switch
- (IBAction)switchAction:(BOOL)on
Slider
- (IBAction)sliderAction:(float)value
Menu Item
- (IBAction)menuItemAction










Presentar Interface Controller de forma Modal

Una interfaz modal es una manera de interrumpir el flujo de la navegación actual temporalmente para pedir al usuario o mostrar información.

Puede presentar una interfaz modal desde cualquier interface controller, independientemente del estilo de navegación utilizada por su aplicación. Para mostrar un controlador de interfaz de forma modal, realice una de las siguientes opciones:

- Crear un segue modal en el storyboard.

- Utilizar el método presentControllerWithName:context: para presentar una interface controller de forma modal.

- Utilizar el método presentControllerWithNames:contexts: para presentar dos o más interface controller utilizando un layout basado en páginas.


Al crear un segue modal, conecte el segue al interface controller que desea mostrar. Cuando utiliza un segue para presentar varios interface controller, primero utilice next page segue para conectar el modal interface controller, de la misma manera que conecta para el layout basado en páginas. 

El modal segue debe conectar el primer interface controller del grupo. Si conecta a un interface controller en el medio del grupo, los interface controller precedentes en el grupo no se mostrarán.

La esquina superior izquierda de un interface controller tipo modal muestra el título del interface controller.  WatchKit desestima el modal interface. Al mostrar la información, es posible establecer el texto de Hecho o Cerrar. Si no se especifica el título del Interface Controller, WatchKit muestra la cadena Cancelar por defecto.




Implementar una interfaz basada en páginas

Se crea una interfaz basada en páginas en el storyboard de la App creando un segue  desde un interface controller a otro interface controller:

- En el storyboard, añadir interface controller para cada página de la App.

- Control-click desde el interface controller inicial y arrastrar hacia otro interface controller. El segundo interface controller se resaltará indicando que es posible un segue.

- Soltar el mouse.

- Seleccionar next page para establecer la relación.

- Utilizar la misma técnica para crear los siguientes. El orden en que se crea los segues define el orden de las páginas de la interfaz.


Los segues que se crean en el storyboard define la interfaz basada en páginas que se carga cuando se inicia la App. 

Puede cambiar el conjunto de páginas a mostrar llamando a reloadRootControllerWithNames: context: al principio de ejecutar la App. 
Puede llamarse en el método init de la interface controller principal forzando a WatchKit a cargar un conjunto diferentes de páginas.

Todos los interface controller de una interface basado en páginas se crean e inicializan antes de mostrar la interfaz, pero sólo se muestra un controlador de interfaz al mismo tiempo.

Normalmente WatchKit muestra el primer interface controller. Para cambiar el interface controller que se muestra inicialmente, ejecutar el método becomeCurrentPage desde init o awakeWithContext.

A medida que el usuario navega de una página a otra, WatchKit activa y desactiva interface controller. 

Durante la transición, se llama al método didDeactivate del interface controller actualmente visible, seguido de una llamada al método willActivate del interfazce controller que está a punto de ser llamado.

Utilizar el método willActivate para actualizar el contenido de su interface controller para reflejar los cambios de última hora.



Navegación Interfaz

Para las App WatchKit con más de una pantalla de contenido, debe elegir una técnica para navegar entre pantallas. WatchKit Apps admiten dos estilos de navegación, que son mutuamente excluyentes:

Page-based: (Basado en páginas)

 Este estilo es adecuado para aplicaciones con modelos de datos simples, donde los datos de cada página no está estrechamente relacionado con los datos en cualquier otra página. 
Una interfaz basada en páginas contiene dos o más controladores de interfaz independientes, sólo uno de los cuales se muestran en un momento dado.
En tiempo de ejecución, el usuario navega entre controladores de interfaz al deslizar izquierda o derecha en la pantalla. 

Hierarchical: (Jerárquica) 

Este estilo es adecuado para aplicaciones con modelo de datos más compleja o aplicaciones cuyos datos sean más jerárquica. Una interfaz jerárquica siempre comienza con un controlador de interfaz de raíz única. En ese controlador de interfaz, usted proporciona controladores que al pulsar, muestran nuevos controladores de interfaz en pantalla.



Las aplicaciones pueden utilizar presentaciones modales para complementar su estilo de navegación base. 

Presentaciones modales son una manera de interrumpir el flujo de trabajo del usuario actual para solicitar información de entrada o la pantalla.

 Puede presentar controladores de interfaz de forma modal de ambas aplicaciones basadas en páginas y jerárquicas. La presentación en sí modal puede consistir en una sola pantalla o varias pantallas dispuestas en un diseño basado en páginas.

sábado, 27 de diciembre de 2014

Internacionalizando su interfaz

Los Storyboards de la WatchKit App tiene una internacionalización de base de forma predeterminada. Esta característica hace que cualquier string es añadida al Localizable.strings del proyecto.

Todo lo que tiene que hacer es traducir las cadenas en los archivos para cada idioma de destino e incluirlos en la App. 

Al pensar en la internacionalización, su principal preocupación debe ser la organización de su interfaz para que las etiquetas y los controles que contiene texto tienen espacio para expandirse. 

Para ver el texto y las imágenes que se especifica mediante programación, utilizar las mismas técnicas de internacionalización que utilizar para las aplicaciones iOs y OS x. 

Utilizar NSLocalizedString para cargar strings desde un fichero de recursos.

Utilizar NSNumberFormatter para formatear valores numéricos.

Utilizar NSDateFormatter para formatear valores de fechas.

lunes, 22 de diciembre de 2014

Como actua el Interface Controllers

Interfaz Controllers administran el contenido de sus escenas del storyboard. Cada Interfaz Controller utiliza outlets para almacenar referencias a objetos de la escena y define los métodos para responder a las interacciones del usuario.

En tiempo de ejecución utilizar los métodos init, awakeWithContext y willActivate para configurar la interfaz. En estos métodos realizar las tareas:

- Obtener los datos que se desea mostrar.

- Establecer los valores iniciales y configuración de etiquetas, imágenes y otros controles.

- Ocultar objetos de interfaz que no necesites y mostrar los que necesite.


    domingo, 21 de diciembre de 2014

    App WatchKit básico

    Xcode suministra storyboard como apoyo para crear la interfaz de la apps WatchKit. Cuando se agrega una App WatchKit al proyecto, Xcode ofrece un storyboard para implementar la interfaz de usuario. 

    El storyboard tiene al menos una escena para la interfaz de usuario de la WatchKit App. Tú puedes añadir escenas (scenes) al storyboard desde la librería de objetos.

    Cada nueva escena en el storyboard extiende de WKInterfaceController. ( Para las interfaz de notificaciones, extender de WKUserNotificacionInterfaceController ). Para cada nueva escena, introducir un nombre de su controlador de interfaz en el inspector de Identidad. No incluir ningún código en la WatchKit App.