Разделитель между навигационной панелью и представлением - iOS 7

В iOS 7 есть серый разделитель между панелью навигации и представлением.

Вернувшись в iOS 6, не было этой горизонтальной линии, поэтому представление будет смешаться с навигационной панелью, как если бы они были одним и тем же изображением. Теперь я не знаю, как его удалить...

Я попытался изменить размер панели просмотра/навигации, но это не помогает. Любые идеи?

Ответ 1

Попробуйте

self.navigationController.navigationBar.translucent = NO;

В вашем методе viewDidLoad и дайте мне знать:)

Если вам нужен этот эффект для каждого ViewController, вы можете просто сделать:

[[UINavigationBar appearance] setTranslucent:NO]

Или вам нужно будет сделать это, когда вы сначала создадите контроллер навигации. Например, если контроллер навигации является контроллером корневого представления вашего приложения, вы можете просто сделать

UINavigationController *nav = (UINavigationController *)self.window.rootViewController;
nav.navigationBar.translucent = NO;

в

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

Если, с другой стороны, вы создаете экземпляр этого файла через segue, который вы могли бы сделать (в соответствующем контроллере представления)

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
   if([segue.identifier isEqualToString:@"navController"]){     
       UINavigationController *nav = (UINavigationController *)segue.destinationViewController;
       nav.navigationBar.translucent = NO;
   }
}

И так далее (если вы на самом деле копируете его из кода, это должен быть самый простой вариант).

Ответ 2

Другие ответы не помогли мне. Чтобы удалить разделитель, мне пришлось установить фоновое изображение и теневое изображение, например:

[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];

Ответ 3

Добавьте это:

[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];

в вашем приложении AppDelegate.m в приложении didFinishLaunchingWithOptions method