第一步:添加两个占位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

简单实现仿UITabBarController界面的更多相关文章

  1. Android ActionBar仿微信界面

    ActionBar仿微信界面 1.学习了别人的两篇关于ActionBar博客,在结合别人的文章来仿造一下微信的界面: 思路如下:1).利用ActionBar生成界面的头部,在用ActionBar的Ac ...

  2. 循序渐进实现仿QQ界面(一):园角矩形与双缓冲贴图窗口

    印象里仿QQ界面的程序应该有很多,搜了一下,虽然出来一大堆,排除了重复的,却只有两三个,没我想象的好.经常看到CSDN上有人问,QQ这个功能怎么实现,那个界面怎么实现,归纳了一下,决定写这么一个仿QQ ...

  3. 循序渐进实现仿QQ界面(三):界面调色与控件自绘

    本篇讲述如何进行界面调色.界面调色一般有两种方法,调色板和HSL色彩变换.调色板局限于256色,这里不采用,因此用HSL色彩变换实现.首先要了解一下什么是HSL色彩空间,完整且详尽的知识请到维基百科去 ...

  4. H5仿微信界面教程(一)

    前言 先来张图,仿微信界面,界面如下,并不完全一模一样,只能说有些类似,希望大家见谅. 1 用到的知识点 jQuery WeUI 是WeUI的一个jQuery实现版本,除了实现了官方插件之外,它还提供 ...

  5. 小程序实践(十):textarea实现简单的编辑文本界面

    textarea是官方的原生组件,用于多行输入 简单的例子,监听文本内容.长度,以及设置最大可输入文本长度 wxml <view class='textarea-Style'> <t ...

  6. WinForm 简易仿360界面控件

    因为经常要做一些1.2千行的小工具,WinForm自带的TabCtrl又不美观,所以想做成360的样子,在网上找来找去,都只有散乱的代码,没有可以通用的结构,于是自己写了一个简易的通用控件. 控件主要 ...

  7. 使用Bootstrap+metisMenu完成简单的后台管理界面

    零. 写在前面 作者最近在一个小项目中需要写后台管理界面,在互联网上绕了一圈,最后决定使用Bootstrap+metisMenu来完成.理由1:Bootstrap是目前流行的前端框架,风格简约,简单易 ...

  8. h5移动端聊天室|仿微信界面聊天室|h5多人聊天室

    今年的FIFA世界杯甚是精彩,最近兴致高涨就利用HTML5开发了一个手机端仿微信界面聊天室,该h5聊天室采用750px全新伸缩flex布局,以及使用rem响应式配合fontsize.js,页面弹窗则是 ...

  9. Python 实现简单的登录注册界面

    Python 实现简单的登录注册界面 注意:编写代码之前需要导入很重要的包 import tkinter as tk import pickle from tkinter import message ...

随机推荐

  1. 强烈推荐一款CSS导航菜单

    强烈推荐一款CSS导航菜单,用到政府学校类网站上超级不错,有点类似站长网菜单的味道,只不过颜色不一样而已,这种菜单还不是真正意义上的“下拉”菜单,应该叫滑出菜单吧?反正比较不错,不多说了. <! ...

  2. poj 1094 Sorting It All Out_拓扑排序

    题意:是否唯一确定顺序,根据情况输出 #include <iostream> #include<cstdio> #include<cstring> #include ...

  3. 安装oracle客户端(navicat for oracle)

    本文使用Navicat for Oracle工具连接oracle 安装的过程我就不在此赘述,跟一般软件的安装过程类似.下面主要讲解Navicat的配置. 1.启动该工具,出现如下的开始界面,单击“连接 ...

  4. Qt之再谈窗体阴影

    前面就窗口阴影已经写过一篇博客,使用九宫格的思路实现的,在我看来,凡是用程序能实现的尽量不要使用图片代替(在保证效率的前提下),今天再次分享关于我的一些小见解!     先看效果:       窗口阴 ...

  5. 高性能浏览器网络(High Performance Browser Networking) 第二章

    第2章 TCP篇 互联网的核心是两个协议,IP和TCP. IP也叫Internet协议,提供主机到主机的路由和寻址:TCP,传输控制协议,在不可靠的传输通道上提供一个可靠的网络抽象.TCP / IP协 ...

  6. PHP高级特性基础

    php对象在内存中的区域:php对象名和对象存放的位置是不一样的,这一点和java是一模一样的,所以在php面向对象部分你完全可以套用java的思想去做.对象存放在堆区(heap)而对象名则和其他普通 ...

  7. OpenGL研究2.0 计算圆

    OpenGL研究2.0 计算圆 DionysosLai2014-06-18 在游戏中.常常有些地方涉及到一些圆的轨迹计算,例如一些转轴类的游戏,人物一般在角色转轴上面运动.这时,我们就要时刻计算角色的 ...

  8. Ubuntu下nginx+uwsgi+flask的执行环境搭建

    选择web framwork是个非常艰难的事情, 主要分为轻量级和重量级框架. 因为没有搭建站点这样的须要, 所以回避SSH, Django这样的框架, 而选择一个轻量级框架. 自己也比較青睐pyth ...

  9. Android 获取 root权限

    在进行android 开发的时候,经常用真机进行调试,有时候需要把手机中的sqlite数据复制出来.这时候就需要获取手机的root权限.通过 adb shell 命令可以获取权限. 1. 运行cmd ...

  10. 初学.NET小技巧(不断更新)

    1.快速打出Console.WriteLine : 输入cw,然后按两下tab键. 2.创建一个函数快捷键:bool b = IsPrimeNumber();   把光标放到函数名上,Shift+Al ...