简单实现仿UITabBarController界面

时间:2023-03-09 19:54:00
简单实现仿UITabBarController界面

第一步:添加两个占位View

第二步:添加子控制器

第三步:添加按钮

#import "ViewController.h"

#define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)

#define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height)

#define TabBar_HEIGHT 49

@interface ViewController ()
/** 底部占位View */
@property(nonatomic, weak)UIView * bottomView;
/** 导航占位View */
@property(nonatomic, weak)UIView * TabBarView; /** 记录按钮点击状态 */
/** <#注释#> */
@property(nonatomic, strong) UIButton * tempBtn; @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
/** 第一步添加两个占位View */
[self setSpaceView];
/** 添加子控制器 */
[self setSubControlVC];
}
#pragma mark -添加子控制器
-(void)setSubControlVC{
UIViewController * vc = ({
vc = [[UIViewController alloc]init];
vc.title = @"全部";
vc.view.backgroundColor = [UIColor yellowColor];
[self addChildViewController:vc];
vc;
});
UIViewController * vc1 = ({
vc1 = [[UIViewController alloc]init];
vc1.title = @"全部1";
vc1.view.backgroundColor = [UIColor brownColor];
[self addChildViewController:vc1];
vc1;
});
UIViewController * vc2 = ({
vc2 = [[UIViewController alloc]init];
vc2.title = @"全部2";
vc2.view.backgroundColor = [UIColor greenColor];
[self addChildViewController:vc2];
vc2;
});
[self setButtonTitle];
} #pragma mark -添加按钮
-(void)setButtonTitle{ /** 计算按钮尺寸 */
NSInteger count = self.childViewControllers.count; CGFloat btnW = 1.0 *SCREEN_WIDTH /count;
CGFloat btnH = TabBar_HEIGHT;
CGFloat btnX = ;
CGFloat btnY = ;
/** 循环添加按钮 */
for (int i = ; i < count; i++) {
/** 创建按钮 */
UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.tag = i;
UIViewController * vc = self.childViewControllers[i];
/** 设置按钮的字体颜色 */
[btn setTitle:vc.title forState:UIControlStateNormal];
[btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[btn setTitleColor:[UIColor redColor] forState:UIControlStateSelected]; btnX = i * btnW;
/** 设置位置 */
btn.frame = CGRectMake(btnX, btnY, btnW, btnH);
/** 设置点击事件 */
[btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
/** 添加按钮到tabView */
[self.TabBarView addSubview:btn]; if (i == ) {
[self btnClick:btn];
} } }
-(void)btnClick:(UIButton *)btn{ self.tempBtn.selected = NO;
btn.selected = YES;
self.tempBtn = btn ; /** 获取子控制器 */
UIViewController* vc = self.childViewControllers[btn.tag];
/** 移除之前的控制器 */
[self.bottomView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
/** 添加当前控制器 */ [self.bottomView addSubview:vc.view];
}
#pragma mark -添加view
-(void)setSpaceView{ /** 添加底部占位View */
UIView * bottomV =({
bottomV = [[UIView alloc]initWithFrame:self.view.bounds];
self.bottomView = bottomV;
self.bottomView.backgroundColor = [UIColor redColor];
[self.view addSubview:self.bottomView];
bottomV;
}); /** 导航占位View */
UIView * tabBarV =({
tabBarV = [[UIView alloc]initWithFrame:CGRectMake(,SCREEN_HEIGHT - TabBar_HEIGHT , SCREEN_WIDTH, TabBar_HEIGHT)];
self.TabBarView =tabBarV;
self.TabBarView.backgroundColor = [UIColor orangeColor];
[self.view addSubview:self.TabBarView];
tabBarV;
});
}
@end