zoukankan      html  css  js  c++  java
  • iOS开发之隐藏tabbar--解决隐藏后依然不能响应对应位置事件的问题

    状态条StatusBar

    1     [UIApplication sharedApplication].statusBarHidden = YES;

    导航条NavigationBar

    1     [self.navigationController setNavigationBarHidden:YES];

    TabBar

    方法1

    1     [self.tabBarController.tabBar setHidden:YES];

    这个方法有问题,虽然tabBar被隐藏了,但是那片区域变成了一片空白,无法被其他视图使用。

    方法2

    对于navigationController+tabBarController的结构,可以在push下一级的childController之前将childController的hidesBottomBarWhenPushed属性设为YES。

    比如,可以在childController的初始化方法中做这件事,代码如下:

    复制代码
     1 // The designated initializer.  Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
     2 
     3 - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
     4     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
     5     if (self) {
     6         // Custom initialization.
     7         self.hidesBottomBarWhenPushed = YES;
     8     }
     9     return self;
    10 }
    复制代码

    方法3

    http://www.azumi.cc/thread-539502-1-1.html

    复制代码
     1 - (void)makeTabBarHidden:(BOOL)hide
     2 {
     3     if ( [self.tabBarController.view.subviews count] < 2 )
     4     {
     5         return;
     6     }
     7     UIView *contentView;
     8    
     9     if ( [[self.tabBarController.view.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]] )
    10     {
    11         contentView = [self.tabBarController.view.subviews objectAtIndex:1];
    12     }
    13     else
    14     {
    15         contentView = [self.tabBarController.view.subviews objectAtIndex:0];
    16     }
    17     //    [UIView beginAnimations:@"TabbarHide" context:nil];
    18     if ( hide )
    19     {
    20         contentView.frame = self.tabBarController.view.bounds;        
    21     }
    22     else
    23     {
    24         contentView.frame = CGRectMake(self.tabBarController.view.bounds.origin.x,
    25                                        self.tabBarController.view.bounds.origin.y,
    26                                        self.tabBarController.view.bounds.size.width,
    27                                        self.tabBarController.view.bounds.size.height - self.tabBarController.tabBar.frame.size.height);
    28     }
    29    
    30     self.tabBarController.tabBar.hidden = hide;
    31     //    [UIView commitAnimations];   
    32 }
    复制代码

    时机

    复制代码
     1 - (void)viewWillAppear:(BOOL)animated {
     2     [self setFullScreen:YES];
     3 }
     4 
     5 - (void)viewWillDisappear:(BOOL)animated {
     6     [self setFullScreen:NO];
     7 }
     8 
     9 - (void)setFullScreen:(BOOL)fullScreen {
    10     // 状态条
    11     [UIApplication sharedApplication].statusBarHidden = fullScreen;
    12     // 导航条
    13     [self.navigationController setNavigationBarHidden:fullScreen];
    14     // tabBar的隐藏通过在初始化方法中设置hidesBottomBarWhenPushed属性来实现。
    15 }
  • 相关阅读:
    使用Lazy对构造进行重构后比较
    Ninject Lazy Load
    在 MVC 中使用 ninject Lazy Load的一个想法
    在Ninject 向构造参数中注入具有相同类型的参数
    关于 SimpleMembership 中 CreateDate 的问题
    ubuntu下谷歌浏览器字体模糊解决方案
    ubuntu双系统时间错乱
    WPS for Linux字体配置(Ubuntu 16.04)
    VS常见错误
    VMware虚拟机ubuntu显示屏幕太小解决办法
  • 原文地址:https://www.cnblogs.com/liuqixu/p/4683196.html
Copyright © 2011-2022 走看看