Панель навигации ios7: появляются 3 странные точки, когда обратная анимация с пользовательской кнопкой
Я хотел бы использовать анимацию обратной навигации, используя
[self.navigationController popViewControllerAnimated:YES]
с добавлением пользовательской кнопки в панель навигации.
Поскольку я не хочу, чтобы кнопка назад отображалась, я скрыл ее с помощью self.navigationItem.hidesBackButton = YES;
Но во время обратной анимации на ios7 (не ios6) можно увидеть 3 точки, скользящих в навигационной панели.
Они не появляются с self.navigationItem.hidesBackButton = NO;
, но, конечно, кнопка может быть видна.
Есть ли у кого-нибудь идея заставить их не появляться?
Ответы
Ответ 1
Если вы установили
self.navigationItem.hidesBackButton = YES
iOS иногда генерирует три точки внутри своей общей кнопки возврата.
Я решил проблему, установив текст на общей кнопке возврата, чтобы быть пустым, а затем я создал свою пользовательскую кнопку. Вот как я устанавливаю пустой текст:
UIBarButtonItem *backButton2 = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.backBarButtonItem = backButton2;
И затем я создал свой пользовательский UIButton и поместил его туда, где я хотел его следующим образом:
UIButton *backButton = [[UIButton alloc] initWithFrame:CGRectMake(5, 70/2-22, 44, 44)];
[backButton setImage:[[UIImage imageNamed:@"back_button.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal];
backButton.tintColor = tintColor;
backButton.imageEdgeInsets = UIEdgeInsetsMake(-2, -15, 0, 0);
[backButton addTarget:self action:@selector(popCurrentViewController) forControlEvents:UIControlEventTouchUpInside];
Ответ 2
Не нужно скрывать backButton
, вы можете просто добавить пользовательскую кнопку возврата, она скроет кнопку по умолчанию.
- (void) viewDidLoad
{
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(handleBack:)];
self.navigationItem.leftBarButtonItem = backButton;
}
- (void) handleBack:(id)sender
{
[self.navigationController popViewControllerAnimated:YES];
}
Ответ 3
Просто добавьте следующие строки в метод viewWillAppear:
Swift:
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .Plain, target: nil, action: nil)
self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "", style: .Plain, target: nil, action: nil)
Цель C:
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
Что все
Ответ 4
navigationItem.backBarButtonItem = nil
Ответ 5
Упрощенная версия:
let emptyBackButton = UIBarButtonItem(title: "", style: .Plain, target: nil, action: nil)
navigationItem.hidesBackButton = true
navigationItem.backBarButtonItem = emptyBackButton
Ответ 6
Вам не нужно писать код, просто выполните 4 простых шага, и вы сделали это.
- Выберите свою Main.storyboard
- Выберите панель навигации в контроллере навигации
- Выберите Инспектор атрибутов
- Очистить цвет оттенков
![введите описание изображения здесь]()