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

1

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

<code>[self.navigationController setNavigationBarHidden:YES animated:YES];
</code>

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

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

Ваш Ответ

2   ответа
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 метод.

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

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

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

Похожие вопросы