简单实现仿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 = 0;
    CGFloat btnY = 0;
    /** 循环添加按钮 */
    for (int i = 0; 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 == 0) {
            [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(0,SCREEN_HEIGHT - TabBar_HEIGHT , SCREEN_WIDTH, TabBar_HEIGHT)];
        self.TabBarView =tabBarV;
        self.TabBarView.backgroundColor = [UIColor orangeColor];
        [self.view addSubview:self.TabBarView];
        tabBarV;
    });
}
@end

 

posted @ 2016-08-01 14:55  与格律上  阅读(261)  评论(0编辑  收藏  举报