Уявіть, що ми використовуємо шаблон за замовчуванням шаблон головного / детального проекту Apple, де master є контролером подання таблиці, і натискання на нього покаже контролер перегляду деталей.
Ми хочемо налаштувати кнопку "Назад", яка з'являється в контролері детального перегляду. Ось як налаштувати зображення , колір зображення , текст , колір тексту та шрифт кнопки "Назад".
Щоб глобально змінити зображення, колір зображення, колір тексту або шрифт, розмістіть наступне в місці, яке викликається до створення будь-якого з ваших контролерів перегляду (наприклад application:didFinishLaunchingWithOptions:
, це гарне місце).
- (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;
}
Зауважте, ви можете використовувати, appearanceWhenContainedIn:
щоб мати більший контроль над тим, на які контролери подання впливають ці зміни, але майте на увазі, що ви не можете пройти[DetailViewController class]
, оскільки він міститься всередині UINavigationController, а не у вашому DetailViewController. Це означає, що вам потрібно буде підклас UINavigationController, якщо ви хочете отримати більше контролю над тим, на що це впливає.
Щоб налаштувати текст або шрифт / колір певного елемента кнопки "Назад", ви повинні зробити це в MasterViewController (а не в DetailViewController!). Це здається неінтуїтивним, оскільки кнопка з’являється на DetailViewController. Однак, як тільки ви зрозумієте, що спосіб налаштувати його - це встановити властивість у навігаційному елементі, це починає мати більше сенсу.
- (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;
}
Примітка: спроба встановити titleTextAttributes після встановлення self.navigationItem.backBarButtonItem, здається, не працює, тому їх потрібно встановити, перш ніж присвоювати значення цій властивості.