2016-05-03 7 views
3

Ich habe ein UIBarButtonItem in einer UINavigationBar, die einige benutzerdefinierte Aussehen Attribute (benutzerdefinierte Schrift, Farbe) hat. Es erscheint normalerweise die meisten Orte in der App.UIBarButtonItem verliert benutzerdefinierte Darstellung Attribute, wenn UIAlertController dargestellt wird

Wenn jedoch ein UIAlertController mit dem ActionSheet-Stil über den View-Controller mit dieser Schaltfläche dargestellt wird, verliert der BarButton seine eigene Schriftart, was zu einem seltsamen "Sprung" auf der Schaltfläche führt und eine falsche Schriftart angezeigt wird kann hier gesehen werden: http://giphy.com/gifs/puopiq9mPyI2Q/html5.

Ich nehme an, dies wahrscheinlich ist damit zusammen, wie wir die BarButton Aussehen setzen, mit dem folgenden Code in AppDelegate:

NSDictionary *btnAttributes = [NSDictionary dictionaryWithObjectsAndKeys: 
            [UIColor  whiteColor],NSForegroundColorAttributeName, 
            [AppearanceConstants mediumFontSize20],   NSFontAttributeName,nil]; 
    [[UIBarButtonItem appearance] setTitleTextAttributes:btnAttributes forState:UIControlStateNormal]; 

Meine Vermutung wäre, dass die Bar-Taste nicht in UIControlStateNormal ist, aber es doesn‘ Es scheint so, als würde ich sowieso sagen, in welchem ​​Zustand sich der BarButton befindet, wenn der AlertController angezeigt wird, und es hat auch nicht funktioniert, die Titeltextattribute auf die entsprechenden Werte für jeden Steuerstatus zu setzen.

Wenn ich nach diesem Schritt zu anderen View-Controllern mit BarButtonItems in ihren NavigationBars navigiere, haben sie immer noch das korrekte Aussehen und wenn ich später zum problematischen Bildschirm zurückkehre, wird es das richtige Aussehen haben, bis AlertController wieder angezeigt wird.

+0

Sie können versuchen, 'Einstellung self.view.tintAdjustmentMode = UIViewTintAdjustmentModeNormal' aus Ihrer Sicht Controller oder 'self.window.tintAdjustmentMode = UIViewTintAdjustmentModeNormal' in Ihrem App-Delegaten. Einige andere Beiträge schlugen dies als Lösung vor. –

+0

Danke für den Vorschlag, schien das Problem nicht zu beheben. Das ist eigentlich nicht einzigartig auf dem Action Sheet, habe ich gerade realisiert. Wir haben einen anderen View-Controller, der sich über die Ansicht erstreckt und das gleiche Problem verursacht, obwohl es weniger auffällt, da wir den Hintergrund verwischen, sodass der "Sprung" nicht zu sehen ist. Die Schriftart wird jedoch weiterhin entfernt. –

Antwort

2

setze ich den Stil nach dem ActionSheet präsentiert

UIAlertController *alertVC = ... 

[self presentViewController:alertVC animated:YES completion:^{ 
    [self.navigationItem.leftBarButtonItem setDefaultAppearanceForSpecificItem]; 
    [self.navigationItem.rightBarButtonItem setDefaultAppearanceForSpecificItem]; 
}]; 

ich auf UIBarButtonItem eine Kategorie erstellt, mir zu helfen

[self setTitleTextAttributes:@{ 
     NSFontAttributeName: [UIFont systemFontOfSize:14], 
     NSForegroundColorAttributeName: [UIColor VKBlueColor] 
} 
forState:UIControlStateNormal]; 
Verwandte Themen