Wyobraź sobie, że używamy domyślnego szablonu projektu głównego / szczegółów firmy Apple, w którym wzorzec jest kontrolerem widoku tabeli, a dotknięcie go spowoduje wyświetlenie kontrolera widoku szczegółów.
Chcemy dostosować przycisk Wstecz, który pojawia się w kontrolerze widoku szczegółów. Oto jak dostosować obraz , kolor obrazu , tekst , kolor tekstu i czcionkę przycisku Wstecz.
Aby globalnie zmienić obraz, kolor obrazu, kolor tekstu lub czcionkę, umieść następujące elementy w lokalizacji, która jest wywoływana przed utworzeniem któregokolwiek z kontrolerów widoku (np. application:didFinishLaunchingWithOptions:
Jest to dobre miejsce).
- (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;
}
Uwaga, możesz użyć, appearanceWhenContainedIn:
aby mieć większą kontrolę nad kontrolerami widoku, na które wpływają te zmiany, ale pamiętaj, że nie możesz ich przekazać [DetailViewController class]
, ponieważ jest zawarty w UINavigationController, a nie w Twoim DetailViewController. Oznacza to, że jeśli chcesz mieć większą kontrolę nad tym, czego dotyczy problem, musisz utworzyć podklasę UINavigationController.
Aby dostosować tekst lub czcionkę / kolor określonego elementu przycisku Wstecz, musisz to zrobić w MasterViewController (nie w DetailViewController!). Wydaje się to nieintuicyjne, ponieważ przycisk pojawia się na DetailViewController. Jednak gdy zrozumiesz, że sposobem dostosowywania jest ustawienie właściwości w navigationItem, zaczyna to mieć więcej sensu.
- (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;
}
Uwaga: próba ustawienia atrybutu titleTextAttributes po ustawieniu self.navigationItem.backBarButtonItem nie wydaje się działać, dlatego należy je ustawić przed przypisaniem wartości do tej właściwości.