Внешний вид iOS 7 UINavigationBar не работает в первый раз...
Я пытаюсь изменить внешний вид UINavigationBar в моем приложении iOS7. Я делаю следующее:
- (void)viewDidLoad
{
[super viewDidLoad];
m_sNumberToCall = @"";
UIBarButtonItem * btn = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"IconHome.png"] style:UIBarButtonItemStyleBordered target:self action:@selector(btHomeTouched:)];
self.navigationItem.leftBarButtonItem = btn;
self.navigationController.navigationBar.translucent = YES;
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"TVCNavBack.png"] forBarMetrics:UIBarMetricsDefault];
NSShadow * shadow = [[NSShadow alloc] init];
shadow.shadowColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8];
shadow.shadowOffset = CGSizeMake(0, 1);
[[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:
[UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:245.0/255.0 alpha:1.0],
NSForegroundColorAttributeName,
shadow,
NSShadowAttributeName,
[UIFont fontWithName:@"Helvetica-Bold" size:21.0],
NSFontAttributeName,
nil]];
}
Но в первый раз, когда я представляю UITableViewController, это стандартная панель навигации iOS7, затем я возвращаюсь домой и снова представляю ее, и это мой новый облик.
Любые идеи, почему это не работает в первый раз?
Ответы
Ответ 1
Не меняйте внешний вид, но панель навигации напрямую. Внешний вид влияет только на будущие экземпляры, но не на уже созданные.
Изменить:
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"TVCNavBack.png"] forBarMetrics:UIBarMetricsDefault];
в
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"TVCNavBack.png"] forBarMetrics:UIBarMetricsDefault];
Ответ 2
Ответ только поможет вам с фоновым изображением, но не с title text attributes
.
Вам не нужно менять код, но все, что вам нужно сделать, это переместить его на
applicationDidFinishLaunchingWithOptions
в вашем файле AppDelegate.m
.