ios 修改UITabBarController的TabBar高度

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];

});

}


ios 修改UITabBarController的TabBar高度_第1张图片

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

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

你可能感兴趣的:(ios 修改UITabBarController的TabBar高度)