¿Cómo cambiar el tamaño de la altura UIPickerView / UIDatePickerView con la disposition automática en rotation de paisaje?

Estoy buscando cambiar el tamaño de una altura de UIPickerView / UIDatePickerView a 162 cuando mi aplicación está en vista horizontal. ¿Hay una manera fácil de hacerlo en el layout automático en el código?

Actualmente estoy probando el siguiente método de event handlingl cambio de tamaño:

- (void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { NSInteger height = 216; if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) { height = 162; } datePicker.bounds = CGRectMake(datePicker.frame.origin.x, datePicker.frame.origin.x, datePicker.frame.size.width, height); } 

Pero cuando este código se ejecuta en la orientación horizontal, obtengo el siguiente efecto donde el selector no está vinculado a la parte inferior izquierda de la pantalla (este es el margen blanco que aparece debajo):

introduzca la descripción de la imagen aquí

¿Hay una forma o distribución automática para manejar este cambio de tamaño con UIPickerViews o debería simplemente jugar con el rectángulo delimitador durante uno de los methods de rotation de la vista en mi controller de vista?

Puede cambiar las alturas de UIPickerView / UIDatePickerView, pero solo a los siguientes valores:

  • 162
  • 180
  • 216

Si está utilizando Autolayout:

 - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) { self.dateHeightConstraint.constant = 216; } else { self.dateHeightConstraint.constant = 162; } } 

Si no está utilizando Autolayout, configure el marco para que tenga una altura de 162 o 216 en este método.