2010-10-11 8 views
5

Tengo lo que es esencialmente un sitio web sin conexión incrustado en un UIWebView. Creé una hoja de estilo para formatear todo muy bien en la pantalla del iPhone, pero necesito un formato diferente para aprovechar mejor la pantalla del iPad.hoja de estilo CSS diferente para iPad y iPhone en la aplicación universal

Intenté usar el código para simplemente copiar una hoja de estilo diferente en su lugar, pero esto implica modificar el paquete de la aplicación que se desaconseja o, en este caso, simplemente no funciona.

¿Alguien puede pensar en una forma de tener una hoja de estilo diferente cargada en función de si la aplicación se ejecuta en el iPhone o iPad? Tengo miles de archivos HTML sincronizados con un sitio web, por lo que no puedo modificarlos fácilmente. Necesito alguna forma de cambiar la hoja de estilo que se carga usando javascript o moviendo el archivo css a cierta ubicación.

También debo mencionar que esta es una aplicación universal con casi el mismo código exacto (y archivos de punta ligeramente diferentes) que se ejecuta en ambos.

Respuesta

3

¿Se puede usar un CSS media query? Puede inyectarlo en sus páginas usando stringByEvaluatingJavaScriptFromString:.

+1

Esta es la ruta que elegí para una demostración interna reciente y funcionó muy bien. Asumiendo que su contenido es casi el mismo y que solo quiere darle un estilo diferente, este es ciertamente el método más rápido que conozco. – Toji

+0

¿Qué javascript usaría para inyectar los enlaces CSS? innerHTML() o hay una mejor manera? (Lo siento, no estoy muy familiarizado con DOM.) – Nimrod

+0

Mi JavaScript está loco oxidado. Tal vez @Toji puede proporcionar alguna orientación. No estoy seguro si es rápido o eficiente en la memoria, pero también podría manipular el HTML como una cadena mutable antes de cargarlo en la vista web. –

2

A través del código del lado del servidor, puede detectar el iPad User Agent y escribir una etiqueta link en una hoja de estilo diferente. Probablemente vaya con la lógica del servidor en lugar de Javascript, simplemente porque no me gusta la posibilidad de un "parpadeo" de hacer esto con Javascript.

+0

No hay lado del servidor. UIWebView carga contenido estático de forma local desde el paquete de aplicaciones. Básicamente utilizo UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad para comprobar si estoy ejecutando en un iPad y luego hago algunas cosas de manera diferente (como los popovers actuales para algunas cosas). Necesito alguna forma de modificar de manera similar el UIWebView para sobrescribir el archivo CSS que carga de manera predeterminada. – Nimrod

0

¿Por qué no echas un vistazo a 960 Grid System http://960.gs. Es útil usar diferentes formatos CSS basados ​​en el dispositivo que encuentra

Cuestiones relacionadas