Zuerst - das ist KEINE Frage über die überlappende Statusleiste der Navigationsleiste (wie viele andere). UINavigationBar (von meinem Navigationscontroller) ist perfekt ausgerichtet, wie ich will.ios7 UINavigationBar hört nach einer Weile auf, sich unter der Statusleiste zu erstrecken
Das Problem ist mit meinem Navigationsleiste benutzerdefinierten Hintergrund.
Das Hintergrundbild (oder die Navigationsleiste selbst) hört auf, in der Statusleiste nach dem Zufallsprinzip zu laufen (nach einigen Sekunden, nachdem meine Anwendung gestartet wurde oder wenn ich die modalen Navigationssteuerungen darüber ausgeblendet habe). Mein benutzerdefiniertes Bild hat die richtigen Abmessungen für iOS (640x128px).
1. Initial-Look (gewünscht - custom 640x128px Hintergrund schön unter Statusleiste erweitert):
2. Nach einer Weile (flackert von selbst):
Was könnte solch ein zufälliges Flackern von UINavigationBar Hintergrundbild verursachen?
Ich verwende folgenden Code meinen Hintergrund zu konfigurieren:
// Load resources for iOS 7 or later
[[CustomNavigationBar appearance] setBackgroundImage:[self imageNamed:@"bg_top_ios7.png"] forBarMetrics:UIBarMetricsDefault];
[[CustomNavigationBar appearance] setBackgroundImage:[self imageNamed:@"bg_top_ios7.png"] forBarMetrics:UIBarMetricsDefaultPrompt];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
Meine Statusleiste Einstellungen in der Info.plist-Datei:
ich auch habe folgende Einstellungen in meiner UIViewController Unterklasse init Methode (nicht sicher, ob es darauf ankommt):
-(id)init{
//DLog(@"BaseViewController init...");
if (self = [super init]) {
popToRoot = modal = NO;
rootIndex = 0;
indexInBottomNavigation = 0;
[Crashlytics setObjectValue:@"init" forKey:NSStringFromClass([self class])];
// iOS 7 adoptions:
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
self.edgesForExtendedLayout = UIRectEdgeNone;
if ([self respondsToSelector:@selector(extendedLayoutIncludesOpaqueBars)])
self.extendedLayoutIncludesOpaqueBars = YES;
if ([self respondsToSelector:@selector(automaticallyAdjustsScrollViewInsets)])
self.automaticallyAdjustsScrollViewInsets = NO;
}
return self;
}
Meine View-Controller sind in den UINavigationController eingebettet (der sich um die UINavigationBar-Positionierung kümmert). Ich benutze auch ECSlidingViewController (offenbaren Container) als Container für meine Navigation Controller, aber ich bin mir nicht sicher, ob es darauf ankommt.