pulgadas pro precio modelos apple ipad orientation

modelos - ipad pro precio



Obtener la orientaciĆ³n actual de iPad? (11)

En un controlador de eventos determinado (no el método "shouldAutorotateToInterfaceOrientation") ¿cómo puedo detectar la orientación actual del iPad? Tengo un campo de texto que tengo que animar (cuando aparece el teclado) en la vista de paisaje, pero no en la vista de retrato y quiero saber en qué orientación estoy para ver si la animación es necesaria.


¡Encontré un truco para resolver el problema de orientación de FaceUp!

¡Retrasar la comprobación de orientación hasta DESPUÉS de que la aplicación haya comenzado a funcionar, luego establecer variables, ver tamaños, etc.!

//CODE - (void)viewDidLoad { [super viewDidLoad]; //DELAY [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(delayedCheck) userInfo:nil repeats:NO]; } -(void)delayedCheck{ //DETERMINE ORIENTATION if( [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait ){ FACING = @"PU"; } if( [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown ){ FACING = @"PD"; } if( [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeLeft ){ FACING = @"LL"; } if( [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeRight ){ FACING = @"LR"; } //DETERMINE ORIENTATION //START [self setStuff]; //START } -(void)setStuff{ if( FACING == @"PU" ){ //logic for Portrait } else if( FACING == @"PD" ){ //logic for PortraitUpsideDown } else{ if( FACING == @"LL"){ //logic for LandscapeLeft } else if( FACING == @"LR" ){ //logic for LandscapeRight } } //CODE

Puede agregar Presentaciones, elementos de posición, etc. en la función ''setStuff'' ... ¡cualquier cosa que dependa inicialmente de la orientación!

:RE

-Chris Allinson


En su controlador de vista, obtenga el valor de solo lectura de self.interfaceOrientation (la orientación actual de la interfaz).


He intentado muchos de los métodos anteriores, pero nada parecía funcionar al 100% para mí.

Mi solución fue hacer una orientación iVar llamada de tipo UIInterfaceOrientation en el Root View Controller.

- (void)viewDidLoad { [super viewDidLoad]; orientation = self.interfaceOrientation; // this is accurate in iOS 6 at this point but not iOS 5; iOS 5 always returns portrait on app launch through viewDidLoad and viewWillAppear no matter which technique you use. } - (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{ return YES; } -(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{ orientation = toInterfaceOrientation; }

Luego, en cualquier lugar donde necesites verificar la orientación, puedes hacer algo como esto:

if(UIInterfaceOrientationIsPortrait(orientation)){ // portrait }else{ // landscape }

Todavía puede haber una forma mejor, pero parece que funciona el 98% de las veces (a pesar de iOS5) y no es demasiado difícil. Tenga en cuenta que iOS5 siempre inicia iPad en la vista vertical, luego envía a un dispositivo los mensajes willRotateTo- and didRotateFromInterfaceOrientation: por lo que el valor seguirá siendo inexacto brevemente.


No sé por qué, pero cada vez que se inicia mi aplicación, las primeras 4 son correctas, pero posteriormente obtengo la orientación opuesta. Utilizo una variable estática para contar esto, luego tengo un BOOL para darle la vuelta a cómo lo envío manualmente a las subvistas.

Entonces, aunque no estoy agregando una nueva respuesta independiente, estoy diciendo que use lo anterior y tenga esto en cuenta. Nota: recibo la orientación de barra de estado, ya que es lo único que se llama cuando la aplicación se inicia y es "lo suficientemente correcta" para ayudarme a mover cosas.

El problema principal con el uso de esto es que las vistas se cargan de forma perezosa. Asegúrese de llamar a la propiedad de vista de sus contenidos y subvistas "Antes" de establecer sus posiciones en respuesta a su orientación. Gracias a Apple por no chocar cuando establecimos variables que no existen, lo que nos obliga a recordar que rompen OO y nos obligan a hacerlo también ... ¡gah, un sistema tan elegante y tan roto! En serio, amo Native, pero simplemente no es bueno, alienta un diseño pobre de OO. No es nuestra culpa, solo recordamos que su función de cambio de tamaño podría estar funcionando, pero Apple''s Way requiere que cargue la vista mediante el uso, no creando e inicializándola.


Para determinar el paisaje frente al retrato, hay una función incorporada:

UIInterfaceOrientation orientation = [[UIDevice currentDevice] orientation]; BOOL inLandscape = UIDeviceOrientationIsLandscape(orientation);


Puedes lograr esto de dos maneras:

1- Al usar el siguiente método:

** Coloque la siguiente línea en el método -(void)viewDidLoad :

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(deviceRotated:) name:UIDeviceOrientationDidChangeNotification object:nil];

luego pon este método dentro de tu clase

-(void)deviceRotated:(NSNotification*)notification { UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; if(orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight) { //Do your textField animation here } }

El método anterior verificará la orientación cuando se rotará el dispositivo

2- La segunda forma es insertando la siguiente notificación dentro -(void)viewDidLoad

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkRotation:) name:UIApplicationDidChangeStatusBarOrientationNotification object:nil];

luego pon el siguiente método dentro de tu clase

-(void)checkRotation:(NSNotification*)notification { UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation; if(orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight) { //Do your textField animation here } }

El método anterior verificará la orientación de la barra de estado del ipad o del iPhone y, según lo que haga, realizará su animación con la orientación requerida.


Uno de:

  • Compruebe la propiedad interfaceOrientation del controlador de vista activo.
  • [UIApplication sharedApplication].statusBarOrientation .
  • [UIDevice currentDevice].orientation . (Es posible que deba llamar a -beginGeneratingDeviceOrientationNotifications ).

creo

[[UIDevice currentDevice] orientation];

no es realmente confiable. A veces funciona, a veces no ... En mis aplicaciones, uso

[[UIApplication sharedApplication]statusBarOrientation];

y funciona genial!


[UIApplication sharedApplication].statusBarOrientation devuelve el retrato cuando es horizontal, y el paisaje cuando es vertical en el lanzamiento, en el iPad


[UIDevice currentDevice].orientation funciona muy bien.

¡¡¡PERO!!! ... el truco es agregarlo a - (void)viewWillAppear:(BOOL)animated

exp:

(void)viewWillAppear:(BOOL)animated{ ... BOOL isLandscape = UIInterfaceOrientationIsLandscape(self.interfaceOrientation); ... }

Si lo llamas a - (void)viewDidLoad , no funciona de manera confiable, especialmente si usas varios subprocesos (subproceso de IU principal, subproceso de fondo para acceder a datos externos masivos, ...).

Comentarios: 1) Incluso si su aplicación establece el retrato de orientación predeterminado, el usuario puede bloquearlo en el paisaje. Por lo tanto, establecer el valor predeterminado no es realmente una solución para evitarlo. 2) Hay otras tareas, como ocultar la barra de navegación, que se colocarán en viewWillAppear para que funcione y, al mismo tiempo, evitar el parpadeo. Lo mismo se aplica a otras vistas como UITableView willDisplayCell -> úsela para establecer cell.selected y cell.accessoryType.


La información de orientación no es muy consistente, y hay varios enfoques. Si está en un controlador de vista, puede usar la propiedad interfaceOrientation . Desde otros lugares puede llamar:

[[UIDevice currentDevice] orientation]

Alternativamente, puede solicitar recibir notificaciones de cambio de orientación:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil];

Algunas personas también desean verificar la orientación de la barra de estado:

[UIApplication sharedApplication].statusBarOrientation