iOS7 не может скрыть панель вкладок, черная полоса
Я хочу скрыть панель вкладок при прокрутке представления коллекции, код
#pragma mark - UIScrollViewDelegate
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
{
[self makeTabBarHidden:YES];
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
[self makeTabBarHidden:NO];
}
- (void)makeTabBarHidden:(BOOL)hide
{
if ( [self.tabBarController.view.subviews count] < 2 )
{
return;
}
UIView *contentView;
UIView *bradeView = [self.tabBarController.view.subviews objectAtIndex:2];
if ( [[self.tabBarController.view.subviews objectAtIndex:0]
isKindOfClass:[UITabBar class]] )
{
contentView = [self.tabBarController.view.subviews objectAtIndex:1];
}
else
{
contentView = [self.tabBarController.view.subviews objectAtIndex:0];
}
// [UIView beginAnimations:@"TabbarHide" context:nil];
if ( hide )
{
contentView.frame = self.tabBarController.view.bounds;
}
else
{
contentView.frame = CGRectMake(self.tabBarController.view.bounds.origin.x,
self.tabBarController.view.bounds.origin.y,
self.tabBarController.view.bounds.size.width,
self.tabBarController.view.bounds.size.height -
self.tabBarController.tabBar.frame.size.height);
}
self.tabBarController.tabBar.hidden = hide;
bradeView.hidden = hide;
}
но в iOS7, когда панель вкладок скрыта, есть черная полоса, которая не исчезает. Как я могу скрыть панель вкладок в iOS7?
4 ответа
Решение
Использовать этот
-(void)viewWillAppear:(BOOL)animated
{
[self.navigationController setNavigationBarHidden:YES animated:animated];
[self setHidesBottomBarWhenPushed:YES];
[super viewWillApper:animated];
}
enter code here
-(void)viewWillDisappear:(BOOL)animated
{
[self.navigationController setNavigationBarHidden:NO animated:animated];
[self setHidesBottomBarWhenPushed:NO];
[super viewWillDisapper:animated];
}
В вашей раскадровке выберите контроллер представления, для которого вы хотите скрыть панель вкладок, перейдите к инспектору атрибутов и в разделе "Просмотр контроллера"> "Расширить края" установите флажок "Под нижними панелями".
Если ваш бар непрозрачный, выберите также Under Opaque Bars.
ЛУЧШИЙ ОТВЕТ, вызовите следующий метод в viewDidLoad и сделайте то, что рекомендуется @tufyx! Удачи
- (void)hideTabBar:(UITabBarController *)tabbarcontroller
{
[tabbarcontroller.tabBar setHidden:YES];
UIView *contentView;
if ([[self.tableView.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]]) {
contentView = [self.tableView.subviews objectAtIndex:1];
} else {
contentView = [self.tableView.subviews objectAtIndex:0];
}
contentView.frame = self.tableView.bounds;
}
Если вы используете segues, как я, вы должны установить свойство контроллера представления перед push. Вот быстрый пример:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "YOUR_SEGUE_NAME" {
let targetVC = segue.destinationViewController as! YOUR_VIEW_CONTROLLER
targetVC.hidesBottomBarWhenPushed = true
}