Agosto 18, 2008

Keep Your Word 1.0

Esta vez ha sido niña.

Tengo el placer de anunciar la disponibilidad inmediata de la segunda aplicación de bambooapps: Keep Your Word.

kyw_interface_400.jpg

¿Para qué sirve Keep Your Word? Pues no es más que una herramienta de apoyo para los que estudiamos idiomas. Permite crear tus propios diccionarios, con los términos que tú quieras, y organizados como tú quieras. Pero además, facilita el aprendizaje de esas colecciones de palabras gracias a sus diferentes "modos de ejercicio".

Keep Your Word es una aplicación sólo para Mac OS X Leopard, tiene un período de prueba de 30 días, durante los cuales la aplicación es completamente funcional, y un precio de $24.95 USD.

Más información en la web de bambooapps.

Julio 17, 2008

FND 1.3

Se acaba de liberar una nueva versión de FND (film is not dead), la aplicación para Mac OS X que viene en ayuda de aquellos que amamos la fotografía analógica y que disfrutamos revelando película con nuestras propias manos.

fnd_1_4_450.png

FND es una tabla de tiempos y reveladores, que permite tener organizada y clasificada tu experiencia con las diferentes combinaciones de película y revelador. Además, FND es un reloj de revelado, que puede funcionar en modo fullscreen, y que es controlable a través del Apple Remote.

La aplicación es sólo para Leopard, tiene un período de prueba de 30 días, y su precio es de 12.95 dólares.

Esta nueva versión permite al usuario asignar los tiempos de agitación, que por defecto se sitúan en 30 segundos tanto en la importación inicial de datos como en la creación de nuevos registros, así como algunos bugfixes.

Junio 13, 2008

Nueve meses

Es el tiempo que ha necesitado flickr para aprobar una solicitud de API comercial. Nota mental número uno: jamás, nunca jamás, vuelvas a depender de un servicio externo para tus desarrollos. Nota mental número dos: el próximo que diga "mashup" delante de mí se va a llevar un bofetón. Algo que tampoco debe descartar el próximo que, delante de mí, vuelva a decir "webdospuntocero". Obviamente, el proyecto, a estas alturas, tiene una capa de polvo de un metro de grosor. Lo que tampoco tiene porqué ser algo necesariamente malo. Veremos.

Junio 10, 2008

iPhone 3G

Apple nunca se ha caracterizado por utilizar la misma vara de medir los productos que utilizan el resto de fabricantes. Por eso, un teléfono caro y corto en funcionalidades en comparación con la competencia, lleva un año siendo el producto estrella de la compañía. Imagino que hoy toda la web especializada en el cacharreo estará dándole mil vueltas a la lista de "cosas" que tiene el teléfono. Sinceramente, eso no creo que sea lo más importante del anuncio de ayer. Desde mi punto de vista, lo más significativo es que la keynote de apertura de la WWDC se dedique prácticamente en exclusiva al lanzamiento de un producto y de un servicio (.Mac) remodelado en apoyo de ese producto. Porque eso es lo que da la idea real de dónde está Apple hoy en día, y de hacia dónde se va a seguir dirigiendo en el futuro cercano. Tampoco creo que nadie se pueda engañar. Ya hace cosa de un año que sabemos que para Apple, el ordenador no es el producto estrella del catálogo, sino un producto más. Incluso, en breve, me temo, el ordenador será sólo la herramienta que los desarrolladores van a necesitar para trabajar en el "auténtico" producto Apple: el iPhone. Es lo que hay, guste o no. Ahora bien, desde el punto de vista de un desarrollador que intenta vender aplicaciones, hoy es un día para estar satisfechos. Apple deja el iPhone en un precio en el que es imposible resistirse (y hasta donde yo recuerdo, es la primera vez que un producto de Apple es más barato que la competencia), y nos permite distribuir aplicaciones a través de un canal embebido en el sistema, con coste cero para nosotros, y con exposición máxima. Dicho de otra forma, el Tito Estíf ha hecho todo lo posible para que sea casi obligatorio para cualquier desarrollador el plantearse seriamente el intentar construir algo para el iPhone. En eso, ganamos todos. El que programa porque lo va a tener algo más fácil para intentar vender; Apple, porque se está asegurando la existencia de un amplio catálogo de aplicaciones; el usuario final, porque va a tener muchas cosas buenas donde elegir. Como mínimo, desde luego, a mí me han hecho replantearme si la idea en la que estoy trabajando va a ser finalmente para escritorio o para iPhone. Y es que no es lo mismo intentar vender una aplicación para una plataforma con un 3% de penetración que para lo que parece que va a ser el cacharro de la temporada.

Abril 23, 2008

Testing: Hopefully not nobody

Que yo recuerde, las versiones anteriores de XCode no incluían en la plantilla de los proyectos ningún archivo de créditos. Según parece, ahora ya sí...

hopefully.png

"Hopefully not nobody". Tiene su chispa.

Abril 01, 2008

FND 1.2

Se acaba de liberar una nueva versión de FND (film is not dead), la aplicación para Mac OS X que viene en ayuda de aquellos que amamos la fotografía analógica y que disfrutamos revelando película con nuestras propias manos.

FND es una tabla de tiempos y reveladores, que permite tener organizada y clasificada tu experiencia con las diferentes combinaciones de película y revelador. Además, FND es un reloj de revelado, que puede funcionar en modo fullscreen, y que es controlable a través del Apple Remote.

La aplicación es sólo para Leopard, tiene un período de prueba de 30 días, y su precio es de 12.95 dólares.

Esta nueva versión incluye, entre varias mejoras de usabilidad, la localización en castellano.

Marzo 19, 2008

Uso de Core Animation para modificar el contenido de una vista

Uno de los frameworks que han hecho su debut con Leopard ha sido Core Animation.

Según Apple, Core Animation es un framework para renderizado gráfico, proyección y animación. Lo que, traducido, quiere decir, que es un framework que facilita enormemente la animación de elementos de interfaz.

Por ejemplo, es muy sencillo cambiar en tiempo de ejecución el contenido de una vista, sustituyéndolo por otra vista completamente distinta, presentando el cambio con una animación discreta, pero efectiva para reforzar el feedback que recibe el usuario del proceso.

En este ejemplo vamos a partir de este primer estado:

swap_final_1.png

Para llegar a este otro:

swap_final_2.png

Como puede verse, en este caso el cambio no es muy grande, se pasa de un slider a un desplegable, no obstante, la transición se hará utilizando la animación por defecto del framework (dissolve).

Construir el interfaz de la aplicación es sencillo. En la ventana principal de la misma, voy a colocar un botón, que será el que lance la animación, y una instancia de NSView, cuyo contenido iré modificando en tiempo de ejecución. Éste sería el aspecto de mi ventana:

swap_ventana.png

Además, construyo dos instancias más de NSView:

swap_view1.png

swap_view2.png

Como se puede ver, el ancho de las dos vistas es diferente.

Construyo también el esqueleto del controlador de la aplicación. Tendré tres outlets, uno a cada uno de las tres vistas (la de la ventana principal, y las dos vistas independientes). Además, tendré un action para el botón de "swap" y un booleano que me indicará si la vista que se está mostrando en cada instante es la primera o la segunda:

#import


@interface ViewSwapController : NSObject
{
IBOutlet NSView *containerView;
IBOutlet NSView *firstView;
IBOutlet NSView *secondView;

BOOL showFirst;
}

-(IBAction) swapView: (id) sender;
@end

Tras crear la instancia de NSObject en Interface Builder y asignarle como clase mi controlador, la estructura del nib sería como la siguiente:

swap_nib.png

Quiero que mi controlador haga lo siguiente: al arrancar la aplicación, insertará dentro de la vista de la ventana principal la primera de las dos vistas independientes que he creado, y cuando se haga clic en el botón de "swap" se cambiará esa vista por la segunda.

Por tanto, el método awakeFromNib será:

-(void) awakeFromNib
{
showFirst = NO;

[ containerView setWantsLayer: YES ];

[ [ containerView animator ] addSubview: firstView ];
}

Simplemente, preparo la vista de la ventana principal para que sea animable, y le añado como subvista la primera de mis vistas personalizadas.

Al hacer clic en el botón:

-(IBAction) swapView: (id) sender
{
NSRect containerFrame = [ containerView frame ];
NSRect firstViewFrame;
NSNumber *newCoord;
NSView *tempFirst;
NSView *tempSecond;

if( showFirst )
{
tempFirst = secondView;
tempSecond = firstView;

showFirst = NO;
}
else
{
tempFirst = firstView;
tempSecond = secondView;

showFirst = YES;
}

[ [ containerView animator ] replaceSubview: tempFirst with: tempSecond ];

firstViewFrame = [ tempSecond frame ];

newCoord = [ NSNumber numberWithFloat: containerFrame.size.width /2 - firstViewFrame.size.width/2 ];

[ tempSecond setFrameOrigin: NSMakePoint( [ newCoord intValue ] , 0 ) ];

}


En primer lugar, calculo el ancho de la vista contenedor, y de la vista que quiero colocar dentro de la misma, para luego poder centrarla, y posteriormente reemplazo la vista que esté dentro del contenedor por la que corresponda.

Lo importante, lo que hace que la transición entre las dos vistas sea animada, es que no ataco directamente la vista contenedor para modificar su contenido, sino que utilizo el decorator que crea CoreAnimation (que se llama animator) para que, de esa forma, cualquier modificación de las propiedades de esa vista se muestre de forma animada.

El proyecto puede descargarse del repositorio público de subversion:

svn co http://svn.liadorasoft.com/viewswap ViewSwap

Enlaces relacionados:
Un clon de Photo Booth en 32 minutos
Extensión por delegación
Bindings, NSArrayController y Value Transformers

Emporio dNation

Powered by
Movable Type 3.2