2013-11-14 20 views
15

iOS7 uygulamasında UINavigationBar görünümünü değiştirmeye çalışıyorum. sonra eve basın ve tekrar sunmak ve bu benim yeni bir görünüm, ben standart iOS7 nav bar UITableViewController sunmak ilk keziOS 7 UINavigationBar görünümü ilk defa çalışmıyor…

- (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]]; 
} 

Ama: Ben aşağıdaki yapıyorum.

İlk kez neden çalışmadığına dair herhangi bir fikir var mı?

+0

ViewDidAppear – Ilario

+0

içinde kodu taşımaya çalıştım Orada denedim ve denemedim, ayrıca viewWillAppear'da da denedim. – LilMoke

+1

Sam konusunu deneyimleyebilecek başka herkes için şu kodu değiştirdim: [[UINavigationBar görünüm] setBa… buna: [self.navigationController.navigationBar setBa… yanı sıra setTitleTextAttributes satırında. Burada cevabı buldum: http://stackoverflow.com/questions/17361500/how-to-set-navigation-bar-image-ins-ios-7 – LilMoke

cevap

26

Görünümü, ancak gezinme çubuğunu doğrudan değiştirmeyin. Görünüm sadece gelecekteki örnekleri etkiler, ancak zaten yaratılmış olanları etkilemez.

Değişimi:

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"TVCNavBack.png"] forBarMetrics:UIBarMetricsDefault]; 

için:

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"TVCNavBack.png"] forBarMetrics:UIBarMetricsDefault]; 
+6

Aslında aynı sorunu yaşıyorum ve navigasyon denetleyicimden önce görüntü ayarlıyorum örneklendirildi ... –

+0

Bu çok açıklıyor! – kokluch

+0

Gerçek çözüm, aşağıdaki @ fabf98dev tarafından yanıtlandığı gibidir. NavigationController'ı kullanmanıza gerek yoktur, sadece ilk viewController'ınızı göstermeden önce bu satırı (UINavigationBar.Appear ..) aradığınızdan emin olmanız gerekir. –

2

cevap sadece arka plan görüntüsü ile size yardımcı olur ancak title text attributes ile önce.

Sen kodunu değiştirmek gerekmez ama yapmanız gereken tüm AppDelegate.m dosyada

applicationDidFinishLaunchingWithOptions

taşıyın olduğunu.