Ok. Проблема в том, что любой контроллер не может напрямую изменять UINavigationBar UINavigationController. Он должен быть изменен с помощью UINavigationController. Я рекомендую создать пользовательский UINavigationController.
Предположим, что имя имя пользовательского UINavigationController является NavController:
@interface NavController()
@end
@implementation NavController
- (void)viewDidLoad
{
[super viewDidLoad];
UIImage *navBackgroundImage = [UIImage imageNamed:@"Navi.png"];
[self.navigationBar setBackgroundImage:navBackgroundImage] forBarMetrics:UIBarMetricsDefault];
[self.navigationBar setTranslucent:NO];//you can change this
self.navigationBar.tintColor = [UIColor colorWithWhite:1 alpha:1];// you can change this too
}
@end
Я устанавливал класс раскадровке в UINavigationController к NavController. Это самый простой способ изменить весь фон UINavigationBars на любых контроллерах. Если вы хотите изменить фон любого конкретного контроллера использовать это (слишком долго не используется, может быть неправильным, но что-то вроде этого.):
UIImage *navBackgroundImage = [UIImage imageNamed:@"Navi.png"];
[self.navigationController.navigationBar setBackgroundImage: navBackgroundImage forBarMetrics:UIBarMetricsDefault];
Хорошо, я только что посмотрел в мои старые коды. Это должно быть правильно.
Прежде всего, я действительно не знаю, как вы можете реализовать эту большую навигационную панель большого размера. Во-вторых, вы используете автономный UINavigationBar или UINavigationController UINavigationBar? Если во-вторых, я изменил его backgroundImage слишком много раз. Я могу поделиться своим кодом. –
Я использую UINavigationController UINavigationBar, , как я могу наложить другие виды в свой UIViewController. –
Все настройки необходимо применять в контроллере родительского представления, прежде чем нажимать контроллер целевого представления. Пожалуйста, проверьте... – byJeevan