¿Qué encontrarás en este post?
ToggleEmpezando con la programación iPhone & iPad Avanzada
Al contrario de lo que pensaba, ayer en programación iPhone iPad avanzada, no vimos iCloud ni GCD o NSOperationQueue. En realidad empezamos por crear una transición personalizada con una segue y un storyboard. Básicamente consistía en obtener un “pantallazo” de distintas vistas y hacer una transición de fusión de una a otra. Posteriormente hicimos una transición personalizada usando transformada en 3D de las sub-layers. Un poco lioso, pero el resultado es atractivo.
Hemos visto técnicas interesantes, pero sigo sin estar convencido de la utilidad de los storyboards y los segues. En mi opinión es más sencillo el método tradicional, usando más el código que esas virguerías gráficas.
Programando para detectar cara y otros rasgos con CoreImage
Siguiendo con más de programación iPhone iPad avanzada, pasamos a ver CoreImage más en profundidad. Se trata de una framework para OSX y también iOS que permite manipular imágenes y aplicar filtros delegando en la medida de lo posible a la GPU. En la medida de lo posible, porque si la imagen es muy grande, y supera el tamaño de la textura que cabe en la GPU, se recae en la CPU, con una merma considerable de rendimiento.
Posteriormente modificamos la aplicación que habíamos creado para los filtros, de manera que pasase a detectar las caras y otros rasgos, como los ojos. Con CoreImage es bastante sencillo hacerlo e incluso pude modificar el código para que la detección se hiciese en tiempo real, mostrando una máscara sobre las caras detectadas y que siguen al rostro a medida que mueves la cámara. Una opción interesante sería enlazar esto con la API de Facebook para poder identificar caras en tiempo real.
Detectar los movimientos del dispositivo en tiempo real con CoreMotion
Después de comer, nos pusimos con CoreMotion para detectar los movimientos del dispositivo en tiempo real. La idea era, usando CorePlot, mostrar gráficos del movimiento del dispositivo en tiempo real y en las 3 dimensiones. Estuvimos discutiendo la posibilidad de hace runa app que indique el movimiento del dispositivo mediante la modulación de un sonido y que sirve para ayudar a orientarse a los que están aprendiendo a volar.
CorePlot, CoreAnimation y CoreGraphics
CorePlot, al contrario de lo que su nombre parece indicar, no es una framework de Apple, sino creada por terceros y que usa CoreAnimation y CoreGraphics por debajo. Permite hacer todo tipo de gráficos y animarlos. Como aun no ha sido adaptada a ARC puede dar un poco de trabajo integrarla en una app con ARC, como eran las nuestras. Para ello, lo ideal es compilar CorePlot como una librería estática, y enlazarla al proyecto. Para más detalles, ved mi artículo sobre librerías estáticas en iOS.
Hoy vamos a repasar un poco CoreMotion y CorePlot para aquellos que no hayan terminado su app ayer, y pasaremos a CoreAudio a muy bajo nivel para procesar sonido en tiempo real. Ya os contaré y, en cuanto tenga un rato libre, ilustraré la experiencia con más fotos.