Pregunta

Tengo una aplicación para iPad que me gustaría hacer universal, sin embargo, esto parece alarmantemente difícil. He cambiado las cosas para que apoyo ambas construcciones, pero al construir, recibo muchos errores sobre el uso de UIPOOVERS. Aquí están mis preguntas:

  • Por que UI_USER_INTERFACE_IDIOM() no compilar ni registrarse en 3.1.3?
  • ¿Puedo tener condicionalmente variables en una definición de clase basada en UI_USER_INTERFACE_IDIOM()?
  • Si no, ¿debería hacer dos controladores de vista diferentes?

¡Gracias!

¿Fue útil?

Solución

¿Por qué ui_user_interface_idiom () no se compila o se registra en 3.1.3?

los UI_USER_INTERFACE_IDIOM La macro solo está disponible comenzando con 3.2. Mismas restricciones para el userInterfaceIdiom propiedad de Uidevice. Esto significa que solo puede obtener una aplicación universal comenzando con SDK 3.2.

¿Puedo tener condicionalmente variables en una definición de clase basada en ui_user_interface_idiom ()?

No. UI_USER_INTERFACE_IDIOM Macro es solo un atajo de tiempo de ejecución para obtener el idioma de interfaz de usuario actual del dispositivo.

Si no, ¿debería hacer dos controladores de vista diferentes?

Si tiene una interfaz de usuario muy diferente entre los dos dispositivos, es más sabio usar dos controladores de vista diferentes y crear la correcta en tiempo de ejecución (en el controlador de aplicación, por ejemplo) utilizando el UI_USER_INTERFACE_IDIOM macro.

Otros consejos

Tuve mucha suerte con solo seleccionar el objetivo y luego ir al proyecto-> Actualizar el objetivo actual para iPad.

Mi aplicación es bastante simple, y consiste principalmente en vistas de mesa y vistas web, pero vale la pena hacer una copia de seguridad e intentar ...

Y sí, debe enviarlo como una aplicación 3.2 que puede apuntar a 3.1.*

También hay muchas otras cosas que debe hacer: asegúrese de que pueda verse en cualquier orientación (fue rechazado la primera vez por esto). Asegúrese de que tenga todas las nuevas imágenes creadas. Debe tener 3 o 4 iconos, en lugar de solo uno como se necesita una aplicación para iPhone. (icono del iPad, icono de iPhone, pequeño icono para Spotlight, etc.). Y, por supuesto, capturas de pantalla del tamaño de un iPad para la tienda.

Una manera realmente buena que uso para probar si es un iPad o iPhone es verificar si el dispositivo puede usar un controlador de vista dividida, ya que para el futuro prevista no hay dispositivo con una pantalla tan pequeña como un iPhone podrá usar la división Ver controlador. Acabo de crear una función para hacer esto por mí:

+(BOOL)isIpad{ return NSClassFromString(@"UISplitViewController") != nil; }

Luego, en cualquier lugar de mi aplicación, que quiero mostrar algo diferente según el dispositivo, solo lo comprobé:

int width = 150;
if([NabAppDelegate isIpad]){
   width = 350;
} else {
   width = 150;
}
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(5,10,width,25)];

Esto es mucho mejor que verificar contra la versión del sistema operativo como he visto que algunos sugieren.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top