Domanda

Il mio cliente non può leggere caratteri predefiniti di iPhone, la dimensione è troppo piccola. Ho una domanda con una barra di navigazione e ho bisogno di fare tutto ciò che più grande, ad esempio, la dimensione del font.

IB non sembra permettere questo ... qualsiasi aiuto?

Molte grazie!

È stato utile?

Soluzione

Aggiornamento: oggi (2012) v'è una tendenza molto più grande verso personalizzato interfacce utente, quindi direi che la risposta qui sotto è troppo dura. Non c'è ancora nessun modo sostenuto di personalizzare altezza, però, ma si può certamente derivare da UINavigationBar e sovrascrivere alcuni metodi di dimensionamento. Questo probabilmente sarà non si ottiene rifiutato (anche se è ancora una zona grigia, solo qualcosa di Apple probabilmente si affacciano oggi).

Una volta a ottenere le dimensioni desiderate, è possibile utilizzare iOS 5 API di personalizzazione per aggiungere l'immagine di sfondo personalizzato (si veda WWDC 2011 Sessione 114 - Personalizzare l'aspetto dei controlli UIKit).

risposta originale a partire dal 2009:

  

Questo è generalmente impossibile.

     

Cosa c'è di più, credo rendendo la barra di navigazione più alto è una violazione   di Apple, Human Interface Guidelines, e la vostra applicazione può essere   respinto da App Store a causa di esso. Si prega di assicurarsi che il proprio   cliente capisce questo rischio prima di procedere.

     

(Sottolineando rischia il rifiuto di solito è un buon modo per convincere   i clienti contro le decisioni senza senso).

Altri suggerimenti

Molte delle risposte qui sono errate, o incomplete, così ho voluto aggiungere la mia risposta qui nella speranza che possa illuminare un po '.

Prima di tutto, non c'è niente di sbagliato con la modifica l'altezza della barra di navigazione. La gente commentando dicendo che il suo non è consentito, o va contro le linee guida sono semplicemente malinteso tali linee guida.

La possibilità di regolare o modificare la barra di navigazione predefinita che viene utilizzata all'interno di un UINavigationController ha fatto parte del SDK dal iOS 5.

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

Il modo più semplice per modificare l'altezza della barra di stato è quello di utilizzare questo metodo quando l'inizializzazione il controller di navigazione, passando nella vostra UINavigationBar personalizzato sottoclasse.

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

Quando un esempio di una tale classe UINavigationBar personalizzato potrebbe assomigliare a:

@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

Se avete deciso di cambiare solo la dimensione del carattere nella barra di navigazione, è possibile farlo (di solito in modo UIViewController del 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];

Per sottoclasse è possibile ottenere che ed ancora sostenere iOS 3 + :

Esempio completo:

#import <UIKit/UIKit.h>

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

e l'attuazione:

#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

Note importanti:

  1. Se l'immagine di sfondo è con aree trasparenti, è necessario impostare la proprietà barStyle a "trasparente" o le aree trasparenti saranno neri.
  2. Se si dispone di un NavigationBar più alto di 44 punti, si deve tener conto che la posizione dei BarButtonItems potrebbe non essere corretta. Tutti saranno ancorate al fondo della barra. si può risolvere che l'override layoutSubviews e cambiare il loro valore origin.y.

Si consiglia di non modificare l'altezza della barra di navigazione. Da Apple Guida Programmazione on View Controller:

Personalizzare la barra di navigazione Aspetto

In un'interfaccia di navigazione, un controller di navigazione possiede il suo oggetto UINavigationBar ed è responsabile per la sua gestione. Non è consentito modificare la barra navigazione oggetto o modificare direttamente i suoi limiti, valori telaio, o alfa. Tuttavia, ci sono alcune proprietà che è permesso di modificare, tra cui i seguenti:

● proprietà barStyle

● proprietà traslucido

● proprietà tintColor

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

UPDATE - IOS 7 --- ancora solo le proprietà disponibili possono essere modificate, ma sotto è un grande tutorial su come ottenere flessibilità nella barra di navigazione http://www.appcoda.com/customize-navigation-status-bar-ios-7/

Per aggiungere alla risposta di Skela:

Se si avvia il controller di navigazione nello Storyboard è possibile cambiare la classe del tuo UINavigationBar nello storyboard alla barra di navigazione personalizzata.

entrare descrizione dell'immagine qui

entrare descrizione dell'immagine qui

e quindi implementare l'altezza cambiamento nella 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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top