Question

Mon client ne peut pas lire les polices par défaut de l'iPhone, la taille est trop petite. J'ai une application avec une barre de navigation et je dois tout faire en plus grand, par exemple, la taille de la police.

IB ne semble pas permettre que cela ... toute aide?

Merci!

Était-ce utile?

La solution

Mise à jour: aujourd'hui (2012), il y a beaucoup plus tendance à interfaces personnalisées, donc je dirais que la réponse ci-dessous est trop dure. Il n'y a toujours aucun moyen prise en charge de la personnalisation de la hauteur, bien, mais vous pouvez certainement tirer de UINavigationBar et remplacer certaines méthodes de dimensionnement. Ce ne sera probablement pas get vous avez rejeté (bien qu'il soit encore une zone grise, juste quelque chose d'Apple surplombera probablement aujourd'hui).

Une fois que vous obtenez la taille que vous voulez, vous pouvez utiliser 5 API de personnalisation iOS pour ajouter l'image d'arrière-plan personnalisé (voir WWDC 2011 Session 114 - Personnalisation de l'apparence des contrôles UIKit).

Réponse originale de 2009:

  

Il est généralement impossible.

     

De plus, je pense faire le plus grand de la barre de navigation est une violation   d'Apple Human Interface Guidelines, et votre application peut être   rejeté de l'App Store à cause de cela. faire s'il vous plaît que votre   client comprend ce risque avant de poursuivre.

     

(Signalant risque de rejet est généralement une bonne façon de convaincre   les clients contre la prise de décisions non-sens.)

Autres conseils

La plupart des réponses ici sont incorrectes ou incomplètes, donc je voulais ajouter ma réponse ici dans l'espoir que cela pourrait éclairer quelques-uns.

Tout d'abord, il n'y a rien de mal à changer la hauteur de la barre de navigation. Les gens commentant dire son pas permis, ou va à l'encontre des lignes directrices sont tout simplement comprennent mal ces directives.

La capacité d'ajuster ou de modifier la barre de navigation par défaut qui est utilisé à l'intérieur d'un UINavigationController fait partie du kit de développement depuis iOS 5.

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

La meilleure façon de changer la hauteur de la barre d'état est d'utiliser cette méthode lors de l'initialisation de votre contrôleur de navigation, en passant dans votre sous-classe UINavigationBar personnalisée.

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];

Lorsqu'un exemple d'une telle classe UINavigationBar personnalisée pourrait ressembler à:

@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 vous avez décidé de changer juste la taille de la police dans la barre de navigation, vous pouvez le faire (habituellement dans la méthode de UIViewController de votre 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];

En vous pouvez réaliser que le sous-classement et soutenir encore iOS 3 + :

Exemple complet:

#import <UIKit/UIKit.h>

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

Et la mise en œuvre:

#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

Remarques importantes:

  1. Si l'image de fond est avec des zones transparentes, vous devez définir sa propriété barStyle à « translucide » ou les zones transparentes seront noires.
  2. Si vous avez un NavigationBar plus grand que 44 points, vous devez prendre en compte que la position des BarButtonItems pourrait ne pas être correcte. Ils seront tous ancrés au fond de la barre. vous pouvez résoudre ce problème en remplaçant layoutSubviews et changer leur valeur origin.y.

Vous ne devez pas modifier la hauteur de la barre de navigation. Guide d'Apple View Controller sur Programing:

Personnalisation de la barre de navigation Apparence

Dans une interface de navigation, un contrôleur de navigation possède son objet UINavigationBar et est responsable de la gestion. Il est interdit de changer l'objet de la barre de navigation ou de modifier ses limites, le cadre ou les valeurs alpha directement. Cependant, il y a quelques propriétés qu'il est permis de modifier, y compris les éléments suivants:

● propriété barStyle

● translucidité

● propriété tintColor

(prise d'Apple: https: / /developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/NavigationControllers.html )

Mise à jour - IOS 7 --- encore que les propriétés disponibles peuvent être modifiés, mais ci-dessous est un excellent tutoriel sur la façon d'obtenir une flexibilité dans la barre de navigation http://www.appcoda.com/customize-navigation-status-bar-ios-7/

Pour ajouter à la réponse de Skela:

Si vous lancez votre contrôleur de navigation dans le Storyboard vous pouvez changer la classe de votre UINavigationBar dans le story-board à votre barre de navigation personnalisée.

et puis mettre en œuvre la hauteur du changement dans la classe

@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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top