2011-08-23 7 views
5

Un cliente me pidió que creara una aplicación "skinnable" y realmente no sé lo que eso significa. Busqué en Google como loco y no encontré una respuesta clara o un ejemplo.¿Cómo hacer que la aplicación de iPhone sea "skinnable"?

Si alguien tiene una pista sobre esto, cualquier consejo sería apreciado.

Gracias.

+6

¡Debería haber pedido una aclaración a su cliente! – Pepe

+0

pregunté. Todavía no recibí una respuesta, pero pensé en hacerme una idea desde el principio, ayudándome a comprender más rápido. – jorjap

Respuesta

3

Generalmente esto significa que la aplicación permitirá al usuario elegir diferentes aspectos de la interfaz de usuario, cada uno de los cuales tendrá un esquema de color diferente, sentir, etc.

+0

Bien, pero ¿cómo hacer esto programáticamente? Al menos una idea general sería genial. Gracias. – jorjap

+1

Ver http://stackoverflow.com/questions/7151608/what-is-the-recommended-method-of-styling-an-ios-app – Jano

0

Para aplicaciones para el iPhone, donde la mayoría del diseño de interfaz gráfica de usuario es proporcionado por el sistema operativo, puede hacerlo configurando imágenes de fondo de barra de navegación personalizadas, gráficos de botones personalizados y diferentes fuentes/tamaños/pesos y espacios en blanco. Asegúrate de estar trabajando con un diseñador que esté familiarizado con la GUI de iPhone (si no trabajas en estrecha colaboración con un diseñador, esto será una pesadilla).

Recientemente, armé una aplicación para un cliente que quería una GUI muy personalizada: http://itunes.apple.com/us/app/gogoparis/id428497937?mt=8. Una aplicación 'skinnable' tendría varios conjuntos como este, por lo que el usuario podría elegir entre varios estilos generales diferentes. (Espero que su cliente tiene un enorme presupuesto de diseño!)

0

mi post aquí debería ayudar a empezar:

What is the recommended method of styling an iOS app?

si necesita cambios temáticos en vivo, cada tema en este ejemplo puede publicar notificaciones cuando el usuario selecciona otro tema (o apariencia) - luego puede actualizar la instancia del tema en sí.

alternativamente, puede crear identificadores para temas que están mapeados (NSCFDictionary) en una fábrica de tema central. un identificador de ejemplo para una vista específica para usar con la fábrica de temas podría ser una cadena MONImageSelectorTableCellThemeIdentifier.

un ejemplo manager/fábrica que maneja toda la carga tema y vends referencias a los temas:

@interface MONThemeManager : NSObject 

//... 

- (MONTheme *)themeForCurrentlySelectedSkinForViewWithIdentifier:(NSString *)identifier; 

//... 

@end 

más allá de eso, es difícil responder a su pregunta con más detalle sin conocer sus necesidades. La implementación de Skinning una aplicación puede variar desde muy simple hasta muy muy compleja. buena suerte.

0

Ya he encontrado una buena respuesta aquí, pero me gustaría añadir que si utilizas un conjunto de herramientas de la interfaz de usuario como Three20 , puedes utilizar todo el contenido de CSS para las páginas web.

0

me di cuenta que es una entrada antigua, pero yo pensé en compartir mi centavo en la materia :)

Para hacer cualquier aplicación Cocoa personalizable que necesita se piensa en 3 aspectos de la aplicación:

1) Uniformidad: con esto quiero decir que en todas las ventanas, vistas (incluidos botones, entradas de texto, etc.), desea tener un 'estándar' que se aplicará en toda la aplicación. Esto es lo primero que necesita mirar. Aunque iOS y OS X ya tienen 'temas' en su lugar, es decir, la manera predeterminada de sombreado y distribución de las manzanas, puede anularlas (consulte la documentación de la vista/ventana, etc. ...

2) Rendimiento: con skinning, etc., el rendimiento siempre es un problema cuando se trata de escribir sus propios métodos drawRect, etc.El código apple que se ha implementado para el 'predeterminado' ya está optimizado, por lo que debe vigilar de cerca el rendimiento de la aplicación mientras lo hace. Buenos ejemplos son: ¿uso una imagen con degradado o uso NSGradient? Ambos tienen problemas de rendimiento cuando se trata de renderizarlos, pero se trata de cuál es el mejor de los dos

3) userDefaults: generalmente es el área donde obtendrías tus 'configuraciones de máscara' de. userDefaults es básicamente donde almacena toda la información que generalmente configura en un panel de preferencias.

Si yo fuera usted me vería en la referencia de clase de la misma:

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/

Además, aquí hay un ejemplo ingenioso de utilizar userDefaults:

http://mobile.tutsplus.com/tutorials/iphone/nsuserdefaults_iphone-sdk/

Espero que esto ayude !

1

Lo que realmente hice con mi proyecto. Decidí usar varios guiones gráficos para tener un mayor control sobre toda la interfaz de usuario y la experiencia de usuario de cada tema. Yo programé unirlos a todos por medio de un guión gráfico maestro que los vincula a todos. Eso es lo que hice, y funciona muy bien. El rendimiento es excelente, al tiempo que mantiene un alto nivel de control de grano fino sobre cada tema. Incluso puede mantener los archivos de Encabezado e Implementación iguales para los controladores de vista individuales, solo para mantener los nombres iguales en el guión gráfico.

Así, por ejemplo, una de mis aplicaciones en la que estoy trabajando llamada Jam-mout (Un reproductor de música) tiene múltiples temas de alta calidad. (Imagen adjunta). Cada tema tiene su propio guión gráfico.

Cuestiones relacionadas