Stellen Sie sich vor, wir verwenden die Standard-Master- / Detailprojektvorlage von Apple, bei der master ein Controller für die Tabellenansicht ist. Wenn Sie darauf tippen, wird der Controller für die Detailansicht angezeigt.
Wir möchten die Schaltfläche "Zurück" anpassen, die im Detailansichts-Controller angezeigt wird. Auf diese Weise können Sie das Bild , die Bildfarbe , den Text , die Textfarbe und die Schriftart der Schaltfläche "Zurück" anpassen .
Um das Bild, die Bildfarbe, die Textfarbe oder die Schriftart global zu ändern, platzieren Sie Folgendes an einem Ort, der aufgerufen wird, bevor einer Ihrer Ansichts-Controller erstellt wird (z. B. application:didFinishLaunchingWithOptions:
ein guter Ort).
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UINavigationBar* navigationBarAppearance = [UINavigationBar appearance];
navigationBarAppearance.backIndicatorImage = [UIImage imageNamed:@"back"];
navigationBarAppearance.backIndicatorTransitionMaskImage = [UIImage imageNamed:@"back"];
navigationBarAppearance.backIndicatorImage = [[UIImage imageNamed:@"back"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
navigationBarAppearance.backIndicatorTransitionMaskImage = [UIImage imageNamed:@"back"];
navigationBarAppearance.tintColor = [UIColor greenColor];
NSDictionary *barButtonTitleTextAttributes =
@{
NSFontAttributeName: [UIFont fontWithName:@"HelveticaNeue-Light" size:12.0],
NSForegroundColorAttributeName: [UIColor purpleColor]
};
[[UIBarButtonItem appearance] setTitleTextAttributes:barButtonTitleTextAttributes forState:UIControlStateNormal];
return YES;
}
Beachten Sie appearanceWhenContainedIn:
, dass Sie mehr Kontrolle darüber haben können, welche Ansichtscontroller von diesen Änderungen betroffen sind. Beachten Sie jedoch, dass Sie nicht übergeben können[DetailViewController class]
, da sie in einem UINavigationController und nicht in Ihrem DetailViewController enthalten sind. Dies bedeutet, dass Sie UINavigationController in Unterklassen unterteilen müssen, wenn Sie mehr Kontrolle darüber haben möchten, was betroffen ist.
Um den Text oder die Schriftart / Farbe eines bestimmten Elements der Zurück-Schaltfläche anzupassen, müssen Sie dies im MasterViewController tun (nicht im DetailViewController!). Dies scheint nicht intuitiv zu sein, da die Schaltfläche im DetailViewController angezeigt wird. Sobald Sie jedoch verstanden haben, dass das Anpassen durch Festlegen einer Eigenschaft in einem Navigationselement sinnvoller wird.
- (void)viewDidLoad {
[super viewDidLoad];
UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithTitle:@"Testing"
style:UIBarButtonItemStylePlain
target:nil
action:nil];
NSDictionary *barButtonTitleTextAttributes =
@{
NSFontAttributeName: [UIFont fontWithName:@"HelveticaNeue-Light" size:12.0],
NSForegroundColorAttributeName: [UIColor purpleColor]
};
[buttonItem setTitleTextAttributes:barButtonTitleTextAttributes forState:UIControlStateNormal];
self.navigationItem.backBarButtonItem = buttonItem;
}
Hinweis: Der Versuch, die titleTextAttributes nach dem Festlegen von self.navigationItem.backBarButtonItem festzulegen, scheint nicht zu funktionieren. Sie müssen daher festgelegt werden, bevor Sie den Wert dieser Eigenschaft zuweisen.