2013-12-13 2 views
1
UIImage *gradientImage46 = [[UIImage imageNamed:@"navbar.png"]resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 


[UINavigationBar appearance] setBackgroundImage:gradientImage46 
              forBarMetrics:UIBarMetricsDefault]; 

Я использую это, чтобы настроить внешний вид моих навигационных панелей в моем приложении. Тем не менее, это приводит к тому, что строка состояния является сплошной черной, ничего не отображающей ... время, носитель, батарея и т. Д. Является ли это ошибкой, или я это неправильно сделал?UINavigationBar внешний видBackgroundImage Hidden Status Bar

У меня это работает на панели вкладок, используя метод MainWindow.xib для интерфейса. Первая вкладка - это просто контроллер навигации с контроллером просмотра внутри него. Другая вкладка - это контроллер навигации с контроллером TableView внутри. Если перейти от одной вкладки к представлению таблицы, а затем вернуться, появится строка состояния.

navbar.png - 320 x 44 пикселей.

ответ

3

У меня тоже есть эта проблема принося мое приложение с прошивкой 6 до iOS7, я решил, изменив код таким образом:

вместо

[UINavigationBar appearance] setBackgroundImage:gradientImage46 
             forBarMetrics:UIBarMetricsDefault]; 

я использую

-(void) viewWillAppear:(BOOL)animated { 

    [self.navigationController.navigationBar setBackgroundImage:gradientImage46 forBarMetrics:UIBarMetricsDefault]; 
} 
+0

Это работает , просто хотел бы знать, почему он работает, если контроллер вида ссылается на другой NIB, но нет, если представление построено внутри одного и того же интерфейса. – user717452