2012-03-13 19 views
6

Quando premo un nuovo tableViewController dalla schermata iniziale di iOS (Spingo la schermata delle impostazioni) il documento nella UINavigationController viene ritagliato fino al termine di animazione:UINavigationBar titolo viene ritagliato durante il cambio viewControllers

enter image description here

questa è la NavigationBar a metà animazione, e poco prima delle finiture di animazione, sembra che questo:

enter image description here

Dopo am omento, il titolo cambia correttamente in "Impostazioni". Non è un grosso problema, ma puoi immaginare quanto disturba un programmatore leggermente incline all'OCD! :)

Ecco il codice che tableViewController in cui ho impostato il titolo, niente di speciale:

- (id)initWithStyle:(UITableViewStyle)style 
{ 
    self = [super initWithStyle:style]; 
    if (self) { 
     self.title = @"Settings"; 
     // Hide tabBar when pushed so you cannot switch from the Settings 
     self.hidesBottomBarWhenPushed = YES; 
     self.tableView.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed:@"bg.png"]]; 
    } 
    return self; 
} 
+2

Ho anche questo fastidioso problema. Nel mio caso sto usando un font personalizzato per il titolo di navigazione e impostandoli usando setTitleTextAttributes: forState :, non succede se non lo cambio. Inoltre, questo "problema" sembra essere risolto in iOS6. Mi piacerebbe trovare un lavoro in giro, ecco perché ho iniziato una taglia per portare un po 'di attenzione ... –

+0

Puoi mettere bg.png su dropbox o simile? –

+0

Hai creato una sottoclasse dei seguenti elementi: 'UINavigationBar',' UINavigationItem', 'UINavigationController'? – Ander

risposta

1

Sono un po 'in ritardo con la risposta, ma ho rintracciato il problema su iOS 5 .. Quando si utilizza il proxy UIAppearance su UINavigationBar, sembra che sia necessario impostare in modo esplicito la dimensione del carattere, invece di usare 0.0 per lasciarlo auto impostato in base all'orientamento.

sono stato in grado di risolvere questo problema sottoclassi UINavigationController e mettendo nel codice seguente:

- (void)viewWillLayoutSubviews { 
    [super viewWillLayoutSubviews]; 

    // You should include a conditional here to check for iOS 5, so iOS 6 doesn't have to do any additional work 
    self.navigationBar.titleTextAttributes = @{ 
     UITextAttributeFont:[UIFont boldSystemFontOfSize:UIInterfaceOrientationIsPortrait(self.interfaceOrientation) || IS_IPAD ? 20.0f : 16.0f], 
     UITextAttributeTextColor:[UIColor whiteColor], 
     UITextAttributeTextShadowColor:[UIColor colorWithWhite:0.0f alpha:0.5f], 
     UITextAttributeTextShadowOffset:[NSValue valueWithUIOffset:UIOffsetMake(0.0f, -1.0f)] 
    }; 
} 
+0

Sì, il problema è stato risolto impostando la dimensione del carattere su un valore codificato. Questo è stato il codice precedente: '[[UINavigationBar apparenza] setTitleTextAttributes: [dictionaryWithObjectsAndKeys NSDictionary: [UIFont fontWithName: @ "Akzidenz Grotesk BQ" dimensioni: 0,0], UITextAttributeFont, nil]];' E ho appena cambiato la dimensione del font su un valore fisso: '[[UINavigationBar apparenza] setTitleTextAttributes: [dictionaryWithObjectsAndKeys NSDictionary: [UIFont fontWithName: @ "Akzidenz Grotesk BQ" dimensione: 22,0], UITextAttributeFont, nil]];' Opere come un fascino ora. Grazie! –

0

provare l'impostazione

self.navigationItem.title = self.title; 

nel metodo viewWillAppear

0

provare

- (void)viewWillAppear:(BOOL)animated { 

    self.title = @"Settings"; 
} 
+1

A parte, per [la documentazione] (http://developer.apple.com/library/ios/documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref/occ/instm/UIViewController/viewWillAppear :), "[i] se ignori questo metodo, devi chiamare super ad un certo punto della tua implementazione." – Rob

Problemi correlati