美文网首页实用集合iOS Developer程序员
ios 修改UITabBarController的TabBar高

ios 修改UITabBarController的TabBar高

作者: 天涯笑笑生 | 来源:发表于2017-04-24 14:05 被阅读1641次

    UITabBarController的view由两部分组成tabbar和transitionView,tabbar的高度默认49,网上搜索有很多改变高度的方法,但是在使用后都会出现白条等不合适的地方,经过不断试验,得出一套目前正确的解决方案,第一,tabbar的frame设置需要在viewDidLayoutSubviews中进行,如果是自定义的tabbar,也是如此,因为viewDidLayoutSubviews在viewDidLoad后执行,所以在viewDidLoad中设置的不执行或者出现错误。第二,viewDidLayoutSubviews在他的子view布局时都会调用,所以要保证自定义的代码执行一次,如果frame设置时给的准确数字,执行两遍倒是不会影响结果,但是,如果含有算式,执行两遍,结果就错了。

    创建一个继承UITabBarController的ViewController类

    @interface MainViewController : UITabBarController

    @end

    在此类中有一个viewDidLayoutSubviews的方法,此方法在每个UITabBarController的每个子View布局时都会调用

    - (void)viewDidLayoutSubviews{

    //    NSLog(@"%s",__func__);

    //此方法在创建每个子View时都会调用,此类中调用两次,下方代码只需要一次

    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

    CGRect frame = CGRectMake(0

    , self.tabBar.frame.origin.y-41

    , self.tabBar.frame.size.width

    , 90);

    self.tabBar.frame = frame;

    NSLog(@"%lf, %lf, %lf, %lf,", self.tabBar.frame.origin.x, self.tabBar.frame.origin.y, self.tabBar.frame.size.width, self.tabBar.frame.size.height);

    //        self.tabBar.backgroundColor = [UIColor redColor];

    WDYTabbar *wDYTabbar = [[WDYTabbar alloc] initWithFrame:self.tabBar.bounds];

    //添加五个按钮

    [wDYTabbar addTabbarBtnWithNormalImg:@"lights0" selImg:@"lights1"];

    [wDYTabbar addTabbarBtnWithNormalImg:@"aircon0" selImg:@"aircon1"];

    [wDYTabbar addTabbarBtnWithNormalImg:@"service0" selImg:@"service1"];

    [wDYTabbar addTabbarBtnWithNormalImg:@"setting0" selImg:@"setting1"];

    //设置代理

    wDYTabbar.delegate = self;

    //把自定义的tabbar添加到 系统的tabbar上

    [self.tabBar addSubview:wDYTabbar];

    });

    }

    自定义TabBar请参考自定义UITabBarController的TabBar

    如有不懂的可以留言&私信

    相关文章

      网友评论

      本文标题:ios 修改UITabBarController的TabBar高

      本文链接:https://www.haomeiwen.com/subject/vltpzttx.html