2011-08-11 10 views
8

En general, en el modo horizontal, la barra de navegación controlada por el controlador de navegación reduce automáticamente su tamaño.Cómo evitar el aumento de tamaño de UINavigationBar en Landscape

Pero quiero evitar ese aumento de tamaño.

Primero, configuré la barra de navegación oculta y utilicé otra barra de navegación no controlada por el controlador de navegación. Entonces, resolví el problema. Pero quiero encontrar la manera de deshabilitar el aumento automático de la barra de navegación en el paisaje sin utilizar otra barra que no esté controlada por el controlador de navegación.

+0

¿por qué quieres hacer esto? este es el comportamiento estándar de iOS. – nielsbot

+0

@nielsbot Eche un vistazo a iOS 7 Safari en el paisaje;) – fumoboy007

Respuesta

5

He resuelto mediante la creación de una categoría en UINavigationBar:

@implementation UINavigationBar (customHeight) 

- (CGSize)sizeThatFits:(CGSize)size 
{ 
    CGSize newSize = CGSizeMake(self.frame.size.width,44); 
    return newSize; 
} 

@end 

Con la categoría creada, la altura ahora permanece fija en el 44 - Ni siquiera necesito para importar la categoría en cualquier lugar.

Mi aplicación utiliza guiones gráficos, pero estoy bastante seguro de que funcionaría en ambos sentidos.

+2

Si bien esto resuelve el problema, no es una buena práctica tratar de usar categorías para la eliminación de métodos. Deberías hacer esto en una subclase. Lea más aquí: https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/CustomizingExistingClasses/CustomizingExistingClasses.html – Ricky

+1

esta solución funciona para la barra de navegación, pero mueve mi barra de herramientas 10px más o menos desde la parte inferior de la vista ... – dot

+2

Esto hace que los elementos en la barra ya no estén centrados verticalmente. Cualquier forma de resolver eso? – Joey

2

Esto funcionará para iOS 8

extension UINavigationBar { 
    public override func sizeThatFits(size: CGSize) -> CGSize { 
     var newSize = CGSizeMake(UIScreen.mainScreen().bounds.width, 44) 
     return newSize 
    } 
} 
+2

Por favor, eduque al solicitante ya todos nosotros explicando brevemente _how and why_ works. De esta forma, puedes esperar obtener un voto no solo jinbruce627, sino también de otros usuarios. –

Cuestiones relacionadas