zoukankan      html  css  js  c++  java
  • 简单实现仿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
  • 相关阅读:
    IE8下网页中的视频会遮挡住顶层DIV的解决办法
    Synchronized 偏向锁、轻量级锁、自旋锁、锁消除
    Lock的使用
    Synchronized与ReentrantLock区别总结(简单粗暴,一目了然)
    Java线程池 面试题(精简)
    Java 线程池的认识和使用
    bat等大公司常考java多线程面试题
    Java面试题必备知识之ThreadLocal
    阿里面试题
    Spring中Bean的生命周期
  • 原文地址:https://www.cnblogs.com/fleas/p/5725854.html
Copyright © 2011-2022 走看看