UI-自定义TabBar
MyCustomTabBar.h文件
#import <UIKit/UIKit.h>
@interface MyCustomTabBar : UITabBarController
@end
MyCustomTabBar.m文件
#import "MyCustomTabBar.h"
#define kDeviceHeigh [UIScreen mainScreen].bounds.size.height
@interface MyCustomTabBar ()<UITabBarDelegate>
@end
@implementation MyCustomTabBar
-(void)viewDidLoad{
[super viewDidLoad ];
//自定义TabBar
UITabBar *tabBar = [[UITabBar alloc]initWithFrame:self.tabBar.frame];
tabBar.userInteractionEnabled = YES;
[self.view addSubview:tabBar];
tabBar.backgroundImage = [UIImage imageNamed:@"tabbg"];
// 添加5个
for (int i = 1 ; i <= 5 ; i ++ ) {
// 获取按钮普通状态和选中状态的两个图片的名称
NSString *imgName = [NSString stringWithFormat:@"TabBar%d", i];
NSString *selImgName = [NSString stringWithFormat:@"TabBar%dSel", i];
// 创建按钮
UIButton *tabBtn = [[UIButton alloc]init ];
CGFloat width = self.view.bounds.size.width / 5;
// 设置按钮的frame
tabBtn.frame =CGRectMake((i-1) * width , 0 , width , 44);
if ( i == 3 ) {
tabBtn.frame = CGRectMake(tabBtn.frame.origin.x , tabBtn.frame.origin.y - 20, tabBtn.frame.size.width, 44 + 20 );
[tabBtn setBackgroundImage:[UIImage imageNamed:@"logoff_btn_n"] forState:UIControlStateNormal];
}else{
// 设置按钮普通状态和选中状态显示的图片
[tabBtn setBackgroundImage:[UIImage imageNamed:imgName] forState:UIControlStateNormal];
[tabBtn setBackgroundImage:[UIImage imageNamed:selImgName] forState:UIControlStateSelected ];
}
tabBtn.tag = 10 + i;
[tabBtn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
[tabBar addSubview:tabBtn];
}
}
-(void)btnClicked:(UIButton *)button{
for (int i = 1 ; i <= 5 ; i++ ) {
UIButton *btn = (UIButton *) [ self.view viewWithTag:10 + i];
if (btn != button) {
btn.selected = NO;
}
}
button.selected = YES;
if (button.tag == 13) {
UIViewController *vc = [[UIViewController alloc]init];
vc.view.backgroundColor = [UIColor orangeColor];
[self presentViewController:vc animated:YES completion:nil];
return;
}
self.selectedIndex = button.tag - 11;
}
@end
AppDelegate.m文件
#import "AppDelegate.h"
#import "MyCustomTabBar.h"
#import "FifthVC.h"
#import "SecondVc.h"
#import "ThirdVC.h"
#import "FourthVC.h"
#import "FirstVC.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
//先创建五个控制器对象
FirstVC *firstVC = [[FirstVC alloc]init];
SecondVc *secondVC = [[SecondVc alloc] init];
ThirdVC *thirdVC = [[ThirdVC alloc]init];
FourthVC *fourthVC = [[FourthVC alloc]init];
FifthVC *fifthVC = [[FifthVC alloc]init];
// 创建TabBar控制器对象
MyCustomTabBar *tabBarVC = [[MyCustomTabBar alloc]init];
// 设置Tabbar的子控制器对象, 需要注意的是,TabBar控制器最多只能显示五个子视图,如果超过5个,它会只显示4个,把其他的放More选项中
tabBarVC.viewControllers = @[firstVC, secondVC, thirdVC, fourthVC, fifthVC];
self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
self.window.rootViewController = tabBarVC;
[self.window makeKeyAndVisible];
return YES;
}
UI-自定义TabBar的更多相关文章
- iOS框架搭建(MVC,自定义TabBar)--微博搭建为例
项目搭建 1.新建一个微博的项目,去掉屏幕旋转 2.设置屏幕方向-->只有竖向 3.使用代码构建UI,不使用storyboard 4.配置图标AppIcon和LaunchImage 将微博资料的 ...
- flutter 自定义tabbar 给tabbar添加背景功能
flutter 自带的tabbar BottomNavigationBar有长按水波纹效果,不可以添加背景图片功能,如果有这方面的需求,就需要自定义tabbar了 自定义图片 我们使用BottomAp ...
- 自定义tabBar
★★★★自定义tabBar★★★★★★★ Demo下载地址:https://github.com/marlonxlj/tabBarCustom.git 前言: 有的时候需求要对tabBar进行自定义的 ...
- IOS第二天-新浪微博 - 添加搜索框,弹出下拉菜单 ,代理的使用 ,HWTabBar.h(自定义TabBar)
********HWDiscoverViewController.m(发现) - (void)viewDidLoad { [super viewDidLoad]; // 创建搜索框对象 HWSearc ...
- 原生HTML5 input type=file按钮UI自定义
原生<input type="file" name="file" />长得太丑 提升一下颜值 实现方案一.设置input[type=file]透明度 ...
- iOS 隐藏自定义tabbar
iOS 隐藏自定义tabbar -(void)viewWillAppear:(BOOL)animated { NSArray *array=self.tabBarController.view.su ...
- iOS开发之功能模块--关于自定义TabBar条
只上项目中用到的代码: 1.实现重写TabBar的TabBarItem,然后在中间额外加一个按钮. #import <UIKit/UIKit.h> @interface BikeTabBa ...
- iOS开发项目之四 [ 调整自定义tabbar的位置与加号按钮的位置]
自定义tabbar与按钮的添加 01 - 把系统的tabbar用我们自己的覆盖 LHQTabBar *lhqTabBar = [[LHQTabBar alloc]init]; [self setVal ...
- 关于自定义tabBar时修改系统自带tabBarItem属性造成的按钮顺序错乱的问题相关探究
关于自定义tabBar时修改系统自带tabBarItem属性造成的按钮顺序错乱的问题相关探究 测试代码:http://git.oschina.net/Xiyue/TabBarItem_TEST 简 ...
- 第二篇、Swift_自定义 tabbar 的 badgeValue显示样式
在实际的开发中,我们常常需要根据实际的需求,去改变bageValue的显示样式,默认是红色的背景,白色的字体颜色 使用方式: class BKTabBarController: UITabBarCon ...
随机推荐
- CentOS 6.5 QtCreator启动时 dbus-1的错误解决方法
启动QtCreator提示:dbus_connection_can_send_type的错误, QString::arg: Argument missing: 无法解析dbus_connection_ ...
- Redis持久化方式RDB和AOF
Redis 持久化 RDB(快照) 优点 rdb是可进行压缩的二进制文件,表示Redis在某一个时间点的数据快照.非常使用与备份,灾难恢复等场景.比如使用定时任务执行bgsave并备份rdb到serv ...
- lamp中的Oracle数据库链接
lamp一键安装包: https://lnmp.org/install.html 在CentOS 6.7 64位安装PHP的PDO_OCI扩展 Installing PDO_OCI extension ...
- 学员管理系统(简单的Django设计)
学员管理系统(简单的Django设计) 学员管理系统 项目规划阶段 项目背景 近年来老男孩教育的入学学员数量稳步快速增长,传统的excel统计管理学员信息的方式已经无法满足日渐增长的业务需求.因此公司 ...
- BZOJ 一句话题解
菜鸡刷题记录 [题号:题解] 1008:简单排列组合 #include <bits/stdc++.h> using namespace std; #define ll long long ...
- ruby安装神器rvm,你造吗?
以前的一篇文章介绍过如何安装ruby,叫做:如何安装/更新ruby,安装cocoapods,为开发做好准备!(2016年12月07日更新内容) 文章中讲到的方法依然可行,但是该方法繁琐并且可能会出现各 ...
- MMU解读
转:https://blog.csdn.net/yueqian_scut/article/details/24816757 mmu页表也是放在内存中,mmu里有一个寄存器存放页表首地址,从而找到页表( ...
- Oauth2.0认证原理
Oauth2.0 认证协议 Oauth2.0 应用场景: 微信联合登录 授权管理 互联网开放平台互相调用保证安全 微信提供api 给toov5调用 然后就可以获取一些微信的信息 比如微信 ...
- Java数据类型——面试题
1.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 +=1;有什么错? 答:对于short s1=1;s1=s1+1来说,在s1+1运算时会自动提升表 ...
- Android -- junit测试框架,logcat获取log信息
1. 相关概念 白盒测试: 知道程序源代码. 根据测试的粒度分为不同的类型 方法测试 function test 单元测试 unit test 集成 ...