UITabBar自定义方式二(容器类控制器)
来源:互联网 发布:安徽八度网络 编辑:程序博客网 时间:2024/06/06 14:23
1.新建类继承于UIView,并在.h公布一个属性,这个属性是选择的按钮下标@property (nonatomic, assign) NSInteger selectedIndex;2.实现代码#pragma mark - 自定义标签栏//1.自定义标签栏- (void)customTabBar{ // 计算每个按钮的宽度 CGFloat width = ScreenW / 5.0; // 1.创建标签栏对象 _tabBarView = [[UIImageView alloc] initWithFrame:CGRectMake(0, ScreenH - 49, ScreenW, 49)]; [self.view addSubview:_tabBarView]; _tabBarView.userInteractionEnabled = YES; // 2.设置标签栏的背景图片 _tabBarView.image = [UIImage imageNamed:@"mask_navbar.png"]; // 3.创建选中图片 _selectedImage = [[UIImageView alloc] initWithFrame:CGRectMake((width - 64) / 2.0, 0, 64, 49)]; [_tabBarView addSubview:_selectedImage]; _selectedImage.image = [UIImage imageNamed:@"home_bottom_tab_arrow.png"]; // 4.创建按钮 NSArray *btnImage = @[@"home_tab_icon_1", @"home_tab_icon_2", @"home_tab_icon_3", @"home_tab_icon_4", @"home_tab_icon_5", @"home_tab_icon_6",]; for (int i=0; i<6; i++) { UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; //设置默认状态的图片 [button setImage:[UIImage imageNamed:btnImage[i]] forState:UIControlStateNormal]; //设置tag button.tag = i + 100; //添加点击事件 [button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside]; //设置frame CGFloat buttonX = width * i; CGFloat buttonY = 0; CGFloat buttonW = width; CGFloat buttonH = 49; button.frame = CGRectMake(buttonX, buttonY, buttonW, buttonH); [_tabBarView insertSubview:button belowSubview:_selectedImage]; } }#pragma mark - 创建 视图控制器//2.创建控制器- (void)_initCtrls { //1.创建视图控制器 RootNavigationViewCtrl *homeCtrl = [[UIStoryboard storyboardWithName:@"HomeViewController" bundle:nil] instantiateInitialViewController]; RootNavigationViewCtrl *messageCtrl = [[UIStoryboard storyboardWithName:@"MessageViewController" bundle:nil] instantiateInitialViewController]; RootNavigationViewCtrl *centerCtrl = [[UIStoryboard storyboardWithName:@"CenterViewController" bundle:nil] instantiateInitialViewController]; RootNavigationViewCtrl *discoverCtrl = [[UIStoryboard storyboardWithName:@"DiscoverViewController" bundle:nil] instantiateInitialViewController]; RootNavigationViewCtrl *moreCtrl = [[UIStoryboard storyboardWithName:@"MoreViewController" bundle:nil] instantiateInitialViewController]; NSArray *navCtrls = @[homeCtrl,messageCtrl,centerCtrl,discoverCtrl,moreCtrl]; //2.取出视图控制器,给视图控制器添加子控制器 for (UIViewController *nav in navCtrls) { [self addChildViewController:nav]; } //3.取出第一个视图控制器并显示 UIViewController *homeViewCtrl = self.childViewControllers[0]; [self.view addSubview:homeViewCtrl.view]; //4.将视图控制器view放到自定义的tabBar工具栏后面 [self.view insertSubview:homeViewCtrl.view belowSubview:_tabBarView]; }#pragma mark - tabBar按钮触发时间- (void)buttonAction:(UIButton *)button { // 1.动画移动选中图片的位置 [UIView animateWithDuration:.35 animations:^{ _selectedImage.center = button.center; }]; self.selectedIndex = button.tag - 100;}//实现视图的切换- (void)setSelectedIndex:(NSInteger)selectedIndex{ _selectedIndex = selectedIndex; // 1.取得老得视图控制器 UIViewController *currentVC = self.childViewControllers[_selectedIndex]; // 2.移除 [currentVC.view removeFromSuperview]; // 3.取得新的视图控制器 UIViewController *newVC = self.childViewControllers[selectedIndex]; // 4.添加 [self.view insertSubview:newVC.view belowSubview:_tabBarView]; }
0 0
- UITabBar自定义方式二(容器类控制器)
- iOS7中的ViewController切换(二.自定义容器控制器动画方式)
- UITabBarController(二)自定义UITabBar方式一
- UITabBarController(三)自定义UITabBar方式二
- 自定义视图控制器容器
- UITabBar自定义方式四(中间无按钮)
- 自定义UITabBar
- 自定义UITabbar
- 自定义UITabBar
- UITabBar 自定义
- 自定义UITabbar
- UITabBar 自定义
- UITabBar自定义方式三(中间有按钮)
- 导航控制器(二 自定义UINaigationControl)
- UI 第三课 ⼀、自定义视图 二、视图控制器指定⾃自定义View 三、检测屏幕旋转 四、处理内存警告 五、容器视图控制器
- CI框架(二)自定义扩展的核心控制器类MY_Controller
- 自定义UITabBar 背景图片
- (转)IOS自定义UITabBar
- 【计蒜客系列】挑战难题17:x的平方根
- Java中接口和抽象类的区别?
- HDU 1233 简单最小生成树 prim算法
- 北京和兴宏图科技软件笔试题目
- 算法之贪心思想
- UITabBar自定义方式二(容器类控制器)
- openCV VS2012环境搭建
- java内存泄露
- cocos2dx 3.x创建工程
- UVA 537
- SQL学习记录10:分组与聚集
- 更新sdk manager的方法
- 带头结点的双向循环链表的表示和实现
- UVA 10815(字符串)