2017-11-14 1 views
6

Ich habe eine ältere App geerbt und wurde damit beauftragt, sie für iOS 11 zu aktualisieren. In einer Ansicht kann der Benutzer auf einen Namen klicken und diesen Benutzer zu seinen Kontakten hinzufügen . Wenn Sie jedoch in iOS 11 zur Ansicht "Kontakt hinzufügen" wechseln, werden die Navigations- und Statusleisten weiß angezeigt. Es funktioniert gut auf iOS 10 und darunter.Titel und Navigationsleisten weiß in iOS 11 in Sicht mit ABNewPersonViewController

Hier ist ein Screenshot Vergleich iOS 10 (links) auf iOS 11 (rechts):

iOS 10 vs 11 Beachten Sie, dass diese Ansicht programmatisch erstellt, und nicht durch das Storyboard:

ABRecordRef person = ABPersonCreate(); 
//... 
ABNewPersonViewController *newPersonViewController = [[ABNewPersonViewController alloc] init]; 
[newPersonViewController setDisplayedPerson:person]; 
newPersonViewController.newPersonViewDelegate = self; 
UINavigationController *newNavigationController = [[UINavigationController alloc] initWithRootViewController:newPersonViewController]; 
[self presentViewController:newNavigationController animated:YES completion:nil]; 
CFRelease(person); 

Ich habe versuchte ein paar verschiedene Dinge basierend auf dem, was ich online gefunden:

  1. Ich fand ich kann manuell die Hintergrundfarbe der Navigationsleiste, aber das lässt die Statusleiste weiß.
  2. Ich habe versucht, eine HeightConstraint der neuen Ansicht hinzuzufügen. Ich habe bestätigt, dass die Einschränkung hinzugefügt wurde, aber es hat nicht geholfen. Allerdings musste ich den Wert mit einer Konstante setzen (versuchte 0, 100, 1000 nur zum Testen) und konnte die relative Einschränkung nicht richtig funktionieren. Egal, nicht sicher, ob es sich lohnte, diesen Weg zu gehen.
  3. Ich sah einige Artikel online, dass iOS 11 ändert, wie die Status/nav bars funktioniert und empfohlene setContentInsetAdjustmentBehavior auf NIE. Dies scheint jedoch nur bei ScrollViews oder TableViews zu funktionieren. Diese Kontakt-Add-Ansicht erscheint nur als UIView.
  4. Versuchte Wechsel zu CNContactViewController (wie ABNewPersonViewController veraltet ist), und lief auf das gleiche Problem.

Jeder Rat wäre hilfreich.

Bearbeiten: Die Farben der Navigationsleiste werden in AppDelegate in der Methode didFinishLaunchingWithOptions wie unten dargestellt gesetzt. Ich habe versucht, alle benutzerdefinierten Logik zu entfernen, die hier eingestellt wird. Die Navigationsleiste wurde etwas fixiert, aber die Statusleiste war immer noch weiß mit weißem Text.

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
// Override point for customization after application launch. 

if ([MPUtils isIOS7OrHigher]) { 
    [[UIToolbar appearance] setBarTintColor:[MPColors colorWithColorString:MPColorString0A3B77]]; 
    [[UINavigationBar appearance] setBarTintColor:[MPColors colorWithColorString:MPColorString0A3B77]]; 

    //color of text on buttons: 
    [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]]; 
    [[UINavigationBar appearance] setTitleTextAttributes:@{UITextAttributeTextColor : [UIColor whiteColor]}]; 
} else { 
    [[UIToolbar appearance] setTintColor:[MPColors colorWithColorString:MPColorString0A3B77]]; 
    [[UINavigationBar appearance] setTintColor:[MPColors colorWithColorString:MPColorString0A3B77]]; 
} 

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 

[MPUserDataSynchronizer syncUserData]; 

return YES; 
} 

Antwort

0

ABNewPersonViewController ist in iOS 9. Verwendung veraltet CNContactViewController statt.

+0

Vergessen zu erwähnen Ich habe versucht, dies durch das Contact-Framework zu ersetzen, und das gleiche Problem trat auf. Ich werde die Frage bearbeiten. – Dave4988

+0

Können Sie posten, wie die Hintergrundfarbe der Navigationsleiste eingestellt wird? –

+0

Sicher, ich werde die Frage hinzufügen. – Dave4988

Verwandte Themen