viernes, 3 de agosto de 2012

Navigation Bar desplaza View de contenido hacia abajo.

Recientemente he estado teniendo un problema en un View Controller en el cual manipulo todos los SubViews directamente en el código, modificando su posición mediante la propiedad frame:
AlbumArt.frame = CGRectMake(15, 52, 290, 290); 
Todo funcionaba estupendamente hasta que decidí agregar un Navigation Controller. Aunque todo parecía funcionar como debiera, en algunos momentos se creaba una franja en la parte superior de mi view y los controles se desplegaban hacia abajo.


Después de un rato de buscar a alguien que le sucediera lo mismo encontré un par de soluciones:

La primera y mas obvia, configura el Navigation Bar para que sea traslucida: 
[self.navigationController.navigationBar setTranslucent:YES]; 
La segunda y que fue la que me ayudó a reconciliarme con mi app fue la de establecer en el código las dimensiones de mi Navigation Bar en el método didRotateFromInterfaceOrientation:
CGRect frame = self.navigationController.navigationBar.frame;
self.MyTable.frame = CGRectMake(0, frame.size.height, frame.size.width,
self.MyTable.frame.size.height - frame.size.height);

Actualización

En algunas ocasiones el procedimiento anterior puede producir comportamientos inesperados en la tabla (como que se reduzca mas de la cuenta). Así que les recomiendo que realicen el ajuste no en el frame de la tabla, sino directamente en el view que contiene la tabla. Suerte!