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.
fonte
2014-01-18 11:49:20
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. –
Inoltre, guarda questa risposta: come animare la barra aperta e chiusa: http://stackoverflow.com/a/2079655/1633251 –
@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