UITabBarController底层实现

思路

1.搭建界面,添加两个UIView(一个是TabBar条,子控制器显示的View)

2.添加子控制器

3.添加按钮(tabbar上有多少个按钮,有子控制器决定)

一.添加子控制器

UIViewController *vc = [[UIViewController alloc]init];

vc.title = @"嘻嘻";

vc.view.backgroundColor = [UIColor orangeColor];

[self addChildViewController:vc];

二.添加按钮

设置控制器的个数

NSInteger count = self.childViewControllers.count;

设置按钮的位置

CGFloat screenW = [UIScreen mainScreen].bounds.size.width;//屏幕的宽度

CGFloat btnW = screenW / count;

CGFloat btnH = self.tabBar.bounds.size.height;

CGFloat btnX = 0;

CGFloat btnY = 0;

添加按钮的和属性

for (int i = 0; i < count  ; i++){

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];

btn.tag  = i;

[btn  setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

[btn setTitleColor:[UIColor redColor] forState:UIControlStateSelected];

UIViewController *vc = self.childViewControllers[i];

[btn setTitle:vc.title forState:UIControlStateNormal];

btnX = i * btnW;

btn.frame = CGRectMake(btnX, btnY, btnW, banh);

[self.tabBar addSubview:btn];

//监听按钮点击

[btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];

if (i == 0) {

[self btnClick:btn];

}

}

监听按钮点击

- (void)btnClick:(UIButton *)button

{

NSInteger i = button.tag;

_selectedButton.selected = NO;


button.selected = YES;

_selectedButton = button;

//点击按钮移除之前的的控制器,添加按钮对应的控制器

//获取子控制器

UIViewController *vc = self.childViewControllers[i];

//移除之前的控制器

[self.containerView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];

//添加当前控制器

[self.containerView addSubview:vc.view];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容