2013-10-19 11 views
8

In iOS7 verkleinert sich die navigationBar in Safari automatisch beim Scrollen. So funktioniert die navigationBar in Facebook, sogar bis zu einem Punkt, wo es vollständig verschwindet.iOS 7 Safari Nav-Bar nachahmen

Wie würden Sie dieses Verhalten selbst implementieren? Ich denke, Sie müssten auch die contentOffset dynamisch anpassen und ich denke, das würde auch mit der Standard-Refresh-Steuerelement kollidieren, oder?

+0

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. –

+0

Siehe auch diese Antwort - wie man die Bar geöffnet und geschlossen: http://Stackoverflow.com/a/2079655/1633251 @ –

+0

@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

Antwort

0

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.