2013-10-19 12 views
8

In iOS7 la barra di navigazione in Safari si riduce automaticamente durante lo scorrimento. Così fa la barra di navigazione in Facebook, anche fino al punto in cui scompare completamente.Imitare iOS 7 Safari Nav-Bar

Come implementeresti questo comportamento tu stesso? Immagino che dovresti anche aggiustare dinamicamente il contentOffset e suppongo che anche colliderebbe con il controllo di aggiornamento predefinito, vero?

+0

Chiedi ai forum Apple interni, probabilmente un posto migliore per ottenere la risposta. Se riesci a farlo, rispondi alla tua stessa domanda poichè gli altri sono sicuramente interessati. –

+0

Inoltre, guarda questa risposta: come animare la barra aperta e chiusa: http://stackoverflow.com/a/2079655/1633251 –

+0

@DavidH che purtroppo non mi aiuta. Non voglio nascondere la barra di navigazione in un colpo solo, voglio che cambi mentre le persone stanno scorrendo e dipende da quanto hanno fatto scorrere. – Infinite

risposta

0

Questo non è il modo giusto per farlo, ma ha funzionato per me. Ho creato categoria sulla UINavigationBar e calpestato sizeThatFits: lì come questo:

- (CGSize)sizeThatFits:(CGSize)size 
{ 
    CGSize cSize = self.frame.size; 
    BOOL isPortrait = UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication] statusBarOrientation]); 
    CGFloat originalHeight = isPortrait ? 44: 32; 
    cSize.height = self.tag > 0 ? originalHeight/2 : originalHeight; 
    return cSize; 
} 

Poi, quando ho bisogno di ridursi barra di navigazione (in metodi delegato di vista di scorrimento):

CGRect navBarFrame = self.navigationController.navigationBar.frame; 
BOOL isPortrait = UIInterfaceOrientationIsPortrait(self.interfaceOrientation); 
CGFloat originalHeight = isPortrait ? 44: 32; 
navBarFrame.size.height = expand ? originalHeight : originalHeight/2; 
self.navigationController.navigationBar.tag = expand ? 0 : 1; 
[UIView animateWithDuration:0.25 animations:^{ 
    self.navigationController.navigationBar.frame = navBarFrame; 
    [self.navigationController.view setNeedsLayout]; 
} 

Inoltre, è possibile nascondere la navigazione elementi (come UIBarButtonItems) all'interno dell'animazione.

Problemi correlati