1

Вопрос по uinavigationbar, iphone, ios – Скрыть панель навигации, но не кнопку назад

я скрываю навигацию используя:

[self.navigationController setNavigationBarHidden:YES animated:YES];

Но мне не нужно скрывать кнопку "Назад", возможно ли это?

  • Я обновил ответ, рекомендовав места для кода. Метод iOS 5 и пользовательская кнопка возврата могут быть в любом месте, где у вас есть доступ к navBar или viewController, который вы на него нажимаете. Предшествующий iOS 5 обходной путь должен быть реализован в собственной категории UINavigationBar.

    от
  • Это моё решение, первое ... куда поместить код? ввиду загрузил?

    от Acunamatata
  • Если вы используете iOS 5, вы можете настроить внешний вид панели навигации. Посмотрите видеоролик WWDC Session 114 или «Пользовательский внешний вид для элементов управления UIKit». в документе iOS 5 здесь:developer.apple.com/library/ios/#releasenotes/General/…

    от
  • Под панелью навигации есть маленькая черная линия ... мне нужно скрыть или стереть ее.

    от Acunamatata
  • я хочу стереть подстилку под панелью навигации ... это возможно

    от Acunamatata
  • Какая тень? Я не получаю ..

    от
  • Может быть, нет .. Потому что кнопка назад является частью панели навигации, я боюсь, что нет.

    от rohan-patel
  • 3

    Неван Кинг прав

    but Вы можете просто изменить фоновое изображение панели навигации или установить его на ноль. Если вы установите его на ноль или предоставите прозрачное BG-изображение, вы достигнете нужного эффекта.

    Для iOS & gt; = 5.0 вы можете просто установить внешний вид:

    if([navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]) // needed if iOS older than 5.0 is also supported
        [navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
    

    Вы можете делать это везде, где у вас есть указатель на панель навигации. Например. внутриviewDidLoad метод вашегоViewController.

    Для более старой версии iOS вам нужно обойтиcategory изUINavigationBar и перезаписатьdrawRect метод:

    @implementation UINavigationBar (BackgroundImage)
    - (void)drawRect:(CGRect)rect {
        UIImage *image = [UIImage imageNamed: @""];
        [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
    }
    @end
    

    Оба метода совместимы, если вы хотите поддерживать все версии iOS.
    При этом следует помнить, что кнопка «Назад» использует одно и то же фоновое изображение. Так что вам нужно будет сделать заказной.

    UIImage *bgImageNormal = [UIImage imageNamed:@"backButtonImage.png"];
    
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setBackgroundImage: bgImageNormal forState:UIControlStateNormal];
    
    button.frame= CGRectMake(0.0, 0.0, bgImageNormal.size.width, bgImageNormal.size.height);
    [button addTarget:self action:@selector(navigationBarBackButtonTouchUpInside:) forControlEvents:UIControlEventTouchUpInside]; // your action method here
    
    UIBarButtonItem *closeButton = [[UIBarButtonItem alloc] initWithCustomView:button];
    self.navigationItem.leftBarButtonItem = closeButton;
    [closeButton release];
    

    Этот код должен быть реализован для каждого ViewController, который вы перемещаете на панель навигации. Хорошее место для этого также внутриviewDidLoad метод.

  • 0

    Кнопка "Назад" создается навигационной панелью и всегда является ее ча

    стью, так что это невозможно. Вы можете скрыть и снова отобразить панель навигации, когда пользователь касается экрана (это то, что приложение «Фотографии» делает, когда вы смотрите на одну фотографию), или создать кнопку, которая будет постоянно находиться в левом верхнем углу экрана. Вы также можете сделать панель навигации частично прозрачной, чтобы содержимое под ней отображалось.