Pregunta

Mi cliente no puede leer las fuentes predeterminadas de iPhone, el tamaño es demasiado pequeño. Tengo una aplicación con una barra de navegación y tengo que hacer todo lo que contiene más grande, por ejemplo, el tamaño de la fuente.

IB no parece permitir que esto ... cualquier ayuda?

Muchas gracias!

¿Fue útil?

Solución

Actualización: Hoy (2012), hay una tendencia mucho mayor a medida hacia las interfaces de usuario, así que diría que la respuesta a continuación es demasiado dura. Todavía no hay una manera de personalizar el apoyo de altura, sin embargo, pero que sin duda puede derivar de UINavigationBar y anular algunos métodos de dimensionamiento. Esto probablemente no consigue que rechazó (aunque todavía es un área gris, simplemente algo que Apple probablemente pasará por alto hoy en día).

Una vez que obtenga el tamaño que desee, puede utilizar las API de iOS 5 de personalización para añadir la imagen de fondo personalizado (ver WWDC 2011 Sesión 114 - Personalizar el aspecto de los controles UIKit).

Respuesta original a partir de 2009:

  

Esto es generalmente imposible.

     

Lo que es más, creo que hacer el más alto barra de navegación es una violación   Manzana de Human Interface Guidelines, y su aplicación puede ser   desechado para la App Store a causa de ella. Por favor asegúrese de que su   cliente entienda este riesgo antes de continuar.

     

(Señalando corre el riesgo de rechazo es por lo general una buena manera de convencer   clientes contra la toma de decisiones sin sentido.)

Otros consejos

Muchas de las respuestas aquí son incorrectos o incompletos, así que quería añadir mi respuesta aquí con la esperanza de que podría iluminar a algunos.

En primer lugar, no hay nada malo con el cambio de la altura de la barra de navegación. La gente comentando diciendo que no es permitido, o va en contra de las directrices son simplemente un malentendido esas directrices.

La capacidad de ajustar o modificar la barra de navegación por defecto que se utiliza dentro de un UINavigationController ha sido parte del SDK de iOS 5 ya.

- (instancetype)initWithNavigationBarClass:(Class)navigationBarClass toolbarClass:(Class)toolbarClass NS_AVAILABLE_IOS(5_0);

La forma más fácil de cambiar la altura de la barra de estado es utilizar este método para inicializar el controlador de navegación, pasando en su UINavigationBar personalizada sub-clase.

TestViewController *t = [[TestViewController alloc] init];
UINavigationController *nav = [[UINavigationController alloc] initWithNavigationBarClass:[MyNavigationBar class] toolbarClass:[UIToolbar class]];
[nav setViewControllers:@[t]];  
[self.window setRootViewController:nav];
[self.window makeKeyAndVisible];

Cuando un ejemplo de una clase UINavigationBar tal costumbre podría ser:

@interface MyNavigationBar : UINavigationBar
@end

@implementation MyNavigationBar

- (CGSize)sizeThatFits:(CGSize)size
{
        CGSize s = [super sizeThatFits:size];
        s.height = 90; // Or some other height
        return s;
}

@end

Si ha decidido simplemente cambiar el tamaño de fuente en la barra de navegación, puede hacer esto (por lo general en el método UIViewController de su viewDidLoad):

UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectZero];

[titleLabel setBackgroundColor:[UIColor clearColor]];
// here's where you can customize the font size
[titleLabel setFont:[UIFont boldSystemFontOfSize:18.0]];
[titleLabel setTextColor:[UIColor whiteColor]];
[titleLabel setText:self.title];
[titleLabel sizeToFit];
[titleLabel setCenter:[self.navigationItem.titleView center]];

[self.navigationItem setTitleView:titleLabel];

[titleLabel release];

Por la subclasificación se puede lograr que y todavía apoyar iOS 3 +

Ejemplo completo:

#import <UIKit/UIKit.h>

@interface ASNavigationBar : UINavigationBar
@property (nonatomic , retain) UIImage *backgroundImage;
@end

Y aplicación:

#import "ASNavigationBar.h"

@implementation ASNavigationBar
@synthesize backgroundImage = _backgroundImage;

-(void) setBackgroundImage:(UIImage *)backgroundImage
{
    if (_backgroundImage != backgroundImage)
    {
        [_backgroundImage release];
        _backgroundImage = [backgroundImage retain];
        [self setNeedsDisplay];
    }
}

-(void) drawRect:(CGRect)rect
{
    // This is how the custom BG image is actually drawn
    [self.backgroundImage drawInRect:rect];
}

- (CGSize)sizeThatFits:(CGSize)size 
{
    // This is how you set the custom size of your UINavigationBar
    CGRect frame = [UIScreen mainScreen].applicationFrame;
    CGSize newSize = CGSizeMake(frame.size.width , self.backgroundImage.size.height);
    return newSize;
}
@end

Notas importantes:

  1. Si la imagen de fondo es con áreas transparentes, usted tiene que establecer su propiedad barStyle a "transparente" o las áreas transparentes serán de color negro.
  2. Si usted tiene un navigationbar más alto que 44 puntos, hay que tener en cuenta que la posición de los BarButtonItems podría no ser correcta. Todos ellos serán anclados a la parte inferior de la barra. se puede arreglar eso anulando layoutSubviews y cambiar su valor origin.y.

No debe cambiar la altura de la barra de navegación. Desde Guía de Programación Apple en Vista Controlador:

Personalizar la apariencia barra de navegación

En una interfaz de navegación, un controlador de navegación posee su objeto UINavigationBar y es responsable de su gestión. No está permitido cambiar el objeto barra de navegación o modificar sus límites, los valores de marco, o alfa directamente. Sin embargo, hay algunas propiedades que es permisible para modificar, entre ellos los siguientes:

● propiedad barStyle

● propiedad translúcida

● propiedad tintColor

(tomado de Apple: https: / /developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/NavigationControllers.html )

ACTUALIZACIÓN - IOS 7 --- todavía sólo las propiedades disponibles se pueden cambiar, pero por debajo es un gran tutorial sobre cómo lograr flexibilidad en la barra de navegación http://www.appcoda.com/customize-navigation-status-bar-ios-7/

Para añadir a la respuesta de Skela:

Si usted inicia el control de navegación en el guión gráfico se puede cambiar la clase de su UINavigationBar en el guión gráfico a su barra de navegación personalizada.

introducir descripción de la imagen aquí

introducir descripción de la imagen aquí

y luego implementar el cambio en la altura de la clase

@interface MyNavigationBar : UINavigationBar
@end

@implementation SwitchAssessmentNavigationBar

- (CGSize)sizeThatFits:(CGSize)size
{
        CGSize s = [super sizeThatFits:size];
        s.height = 200; // Or some other height
        return s;
}

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