2012-01-11 11 views
6

Sé que ya se ha formulado una pregunta similar, pero no obtuvo una respuesta satisfactoria. Así que estoy agregando esta pregunta nuevamente.¿Cómo crear una aplicación basada en tema?

Según la selección del usuario en la aplicación iphone, necesito cambiar el aspecto de la aplicación (imágenes de fondo de fuente de color, etc.). ¿Hay alguna forma estándar de lograr esto?

una posible solución puede ser la duplicación de archivos xib para cada tema y cargarlo en función de la selección. ¿Es este un buen enfoque? principalmente porque el cableado de los tomacorrientes y las acciones para copias xib suena como una tarea redundante.

Me gustaría ver la sugerencia de un experto para esta duda. Gracias por cualquier ayuda con anticipación.

-mia

Respuesta

0

Por la ruta no XI ter

Color: iOS 5 expone las nuevas API de apariencia. La mayoría de los elementos de la interfaz de usuario tienen la opción si se establece un tintColor o un backgroundColor. Rara vez, incluso una imagen de fondo.

Fuente: Siempre fue capaz de cambiar, pero no se pudo animar.

Imagen de fondo: Su UIView principal debe tener la opción de una imagen de fondo, o si falla, un color de fondo con una imagen de patrón.

+0

Esto es solo el ajuste dinámico del color en función de la selección. Eso está bien, pero estoy buscando una opción eficiente como temas o estilos en la que simplemente pueda cambiar los temas dinámicamente al mismo tiempo, no tengo que manejar explícitamente el código o duplicar plumillas. – mia

+0

[UIButton setTintColor: [UIColor someColor]]; tienes que manejar todo tú mismo Haga un par de métodos con algunos valores de color preestablecidos para cada 'nuevo estilo' como lo llama – CodaFi

0

La mejor manera de implementar la aplicación IOS de aplicaciones basadas en temas (sin utilizar ~ xib route). deberías crear un archivo build.xml que contendrá todos los temas. Debe mantener su diseño igual y puede cambiar las imágenes, el estilo, las fuentes, lang, vistas, en ese diseño según prefieran los usuarios. Al hacer esto, no está duplicando ningún código y obtendrá los mejores resultados de su aplicación.

+0

Lo siento, no entiendo su explicación. ¿Podría explicar un poco más? Además, esto no es dinámico rt? significa que cuando el programa está funcionando, el usuario no puede cambiar de tema. – mia

0

Como dijo CodaFI, si está utilizando iOS 5 o superior, ya tiene una función de tematización. Funciona así:

  • agregar el protocolo <IAppearanceContainer> a la clase.

  • Decora la propiedad que deseas cambiar con UI_APPEARANCE_SELECTOR. Ejemplo:

     
    @interface UINavigationBar : ... <IAppearanceContainer> 
    @property(nonatomic,retain) UIColor *tintColor UI_APPEARANCE_SELECTOR; 
    @end 
    

  • Cambiar el color para todas las instancias de la clase:
     
    [[UINavigationBar appearance] setTintColor:[UIColor redColor]]; 
    

El ejemplo anterior es el UINavigationBar, pero sería trabajar con cualquier clase personalizada. Para ver los objetos que ya están apoyados en IOS 6.1, consulte la documentación o ejecutar los siguientes comandos:

cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/System/Library/Frameworks/UIKit.framework/Headers 

grep -H UI_APPEARANCE_SELECTOR ./* | sed 's/ __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0) UI_APPEARANCE_SELECTOR;//' 

Digamos que usted desea temas modulares:

  • escribir un archivo grande plist con todos los tipos de letra, colores , música y qué no. Cada uno de estos archivos será un tema.
  • Lea el archivo a través de un singleton y establezca los valores con líneas como [x appearance] setWhatever:<plist value>] para cada elemento capaz de tema.
  • Si tiene instancias del mismo elemento que necesitan mostrar elementos diferentes, obtenga esas imágenes a través del singleton.

Ese es más o menos el consejo de Amit Vyawahare. Dije plist en cambio xml porque son más fáciles de leer. No duplicar los NIB a menos que realmente tengas que hacerlo.

Cuestiones relacionadas