Представьте ситуация когда ваше приложение имеет
navigationController и пару окон в одно из которых отображение
navigationBar-а не обезательно или даже нежелательно.
Я создал стандартный вид перехода от первого окна ко второму по средствам navigationController. Если скомпилировать проект мы увидим, что на первом окне уже появилась верхняя навигационная панель.
Теперь нам нужно добиться прозрачности навигационной панели в первом окне.
Для этого добавим следующий код в m файл нашего контроллера первого окна.
Во втором окне ситуация точно такая же. Верхняя панель прозрачная, но задача стоит спрятать навигационную панель только на первом окне. Для этого добавим следующий код в m файл второго контроллера:
Теперь можете скомпилировать проект и посмотреть как выглядит первое и второе окно.
Я создал стандартный вид перехода от первого окна ко второму по средствам navigationController. Если скомпилировать проект мы увидим, что на первом окне уже появилась верхняя навигационная панель.
Теперь нам нужно добиться прозрачности навигационной панели в первом окне.
Для этого добавим следующий код в m файл нашего контроллера первого окна.
- (void)viewWillAppear:(BOOL)animated{Сдесь я назначаю посути прозрачную картинку navigationBar-у и убираю тень. Вот как будет выглядеть первое окно при компиляции проекта, и ещё я добавил кнопку с помощью которой мы тоже осуществим переход на второе окно. Так же как и в случае с кнопкой Item я назначил ей push переход ко второму окну.
//прозрачный верхний бар
[self makeTransparentNavBar];
}
-(void) makeTransparentNavBar{
self.navigationController.navigationBar.translucent = YES;
const float colorMask[6] = {222, 255, 222, 255, 222, 255};
UIImage *img = [[UIImage alloc] init];
UIImage *maskedImage = [UIImage imageWithCGImage: CGImageCreateWithMaskingColors(img.CGImage, colorMask)];
[self.navigationController.navigationBar setBackgroundImage: maskedImage forBarMetrics:UIBarMetricsDefault];
//убираем тень
[self.navigationController.navigationBar setShadowImage: [[UIImage alloc] init]];
}
Во втором окне ситуация точно такая же. Верхняя панель прозрачная, но задача стоит спрятать навигационную панель только на первом окне. Для этого добавим следующий код в m файл второго контроллера:
- (void)viewWillAppear:(BOOL)animated{В данном методе мы убираем картинку с заднего плана тем самым navigationController сам установит нам дефолтный задний план. Теперь уберём название с навигационной панели первого окна и кнопку Item
//установим пустую картинку для панели
[self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
}
Теперь можете скомпилировать проект и посмотреть как выглядит первое и второе окно.
Комментариев нет:
Отправить комментарий