Das ist nicht der richtige Weg, aber es hat für mich funktioniert. Ich habe Kategorie auf UINavigationBar
und overrode sizeThatFits:
es wie folgt aus:
- (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;
}
Dann, wenn ich Navigationsleiste müssen schrumpfen (in Delegatmethoden der Scroll-Ansicht):
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];
}
Auch
, können Sie die Navigation verstecken Elemente (wie UIBarButtonItems) innerhalb der Animation.
Fragen Sie in den internen Apple-Foren, wahrscheinlich ein besserer Ort, um die Antwort zu bekommen. Wenn Sie es bekommen, beantworten Sie Ihre eigene Frage, da andere sicherlich interessiert sind. –
Siehe auch diese Antwort - wie man die Bar geöffnet und geschlossen: http://Stackoverflow.com/a/2079655/1633251 @ –
@DavidH, die mir leider nicht hilft. Ich möchte die Navigationsleiste nicht auf einmal ausblenden, ich möchte, dass sie sich ändert, während die Leute scrollen und abhängig davon, wie viel sie gescrollt haben. – Infinite