文档章节

自定义tabBar

_Tiny
 _Tiny
发布于 2016/01/18 17:38
字数 436
阅读 19
收藏 1

  1. 创建继承与UITabBarViewController 的 ViewController

  2. //
    //  CustomViewController.m
    //  EmpManager
    //
    //  Created by _Tiny on 16/1/18.
    //  Copyright © 2016年 dean. All rights reserved.
    //
    
    #import "CustomViewController.h"
    #import "MyViewController.h"
    @interface CustomViewController ()<UITabBarControllerDelegate,UITabBarDelegate>
    @property(nonatomic,retain)UIButton *btn;
    @property(nonatomic,assign)BOOL isSel;
    @property(nonatomic,retain)NSMutableArray *allButtonArray;
    @end
    
    @implementation CustomViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        self.tabBar.hidden = YES;
        
        [self tabBarCustom];
        // Do any additional setup after loading the view.
    }
    -(void)tabBarCustom
    {
       //首先移除当前的tabBar
        [self.tabBarController.tabBar removeFromSuperview];
        //自定义view放按钮
        UIView *myView = [[UIView alloc]init];
        myView.frame = CGRectMake(0, 603*Height, 375*Width, Height*64);
        
    //    self.tabBarController.delegate = self;*签协议,(使用selectedIndex属性)*
        [self.view addSubview:myView];
        //设置按钮选中前图片
        NSMutableArray *tabBarImage = [NSMutableArray arrayWithObjects:@"shouye1.png",@"tongxunli1.png",@"wode1.png", nil];
        //设置按钮选中图片
        NSMutableArray *tabBarSelImage = [NSMutableArray arrayWithObjects:@"shouyexuanzhong1.png",@"tongxunluxuanzhong1.png",@"wodexuanzhong", nil];
        self.allButtonArray = [NSMutableArray array];
        for (int i = 0;  i < 3 ;  i ++) {
            self.btn = [UIButton buttonWithType:UIButtonTypeCustom];
            self.btn.frame = CGRectMake(Width*(125*i), 0, 125, 64);
    //        self.btn.backgroundColor = [UIColor grayColor];
            [self.allButtonArray addObject:self.btn];
            [myView addSubview:self.btn];
      
            self.btn.tag = i;//设置按钮的标记, 方便来索引当前的按钮,并跳转到相应的视图
            [self.btn addTarget:self action:@selector(clickBtn:) forControlEvents:UIControlEventTouchUpInside];
            [self.btn setBackgroundImage:[UIImage imageNamed:[tabBarImage objectAtIndex:i]] forState:UIControlStateNormal];
            [self.btn setBackgroundImage:[UIImage imageNamed:[tabBarSelImage objectAtIndex:i]] forState:UIControlStateSelected];
            //初始设置为未选中
            self.btn.selected = NO;
            //第一个按钮为选中状态
            if (self.btn.tag == 0) {
                self.isSel = YES;
            }else{
                self.isSel = NO;
            }
            if (self.isSel == YES) {
                self.btn.selected = YES;
            }else{
                self.btn.selected = NO;
                   
            }
            
        } 
    }
    //按钮点击方法 
    -(void)clickBtn:(UIButton *)sender
    {    //
        NSMutableArray * arr = [NSMutableArray arrayWithArray:self.allButtonArray];
        for (UIButton * bu in self.allButtonArray) {
            if (bu.tag == sender.tag) {
                bu.selected = YES;
                arr[sender.tag] = bu;
            }else{
                bu.selected = NO;
            }
        }
        //最关键的一句,点击当前按钮,对应相应的tabBar
        self.selectedIndex = sender.tag; 
    }
    
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    
    @end
  3. 在Appdelegate.m
    #pragma mark - 加载自动登录的页面
    - (void)setupHomeViewController{
        
        self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]];
        self.window.backgroundColor = [UIColor whiteColor];
        [self.window makeKeyAndVisible];
        
    
        HomeViewController *homeVC = [[HomeViewController alloc]init];
        UINavigationController *navHomeVC = [[UINavigationController alloc]initWithRootViewController:homeVC];
        
        AddressBookViewController *addressBVC = [[AddressBookViewController alloc]init];
         UINavigationController *navVC = [[UINavigationController alloc]initWithRootViewController:addressBVC];
        
        MyViewController *myVC = [[MyViewController alloc]init];
         UINavigationController *navMyVC = [[UINavigationController alloc]initWithRootViewController:myVC];
        
        CustomViewController *customVC = [[CustomViewController alloc]init];
        customVC.viewControllers = [NSArray arrayWithObjects:navHomeVC,navVC,navMyVC, nil];
        self.window.rootViewController = customVC;
      }
  4. #pragma mark - 图片渲染
    - (UIImage *)renderImageWithImageName:(NSString *)imageName{
        UIImage * image = [[UIImage imageNamed:imageName] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal];
        return image;
    }


© 著作权归作者所有

_Tiny
粉丝 0
博文 3
码字总数 736
作品 0
昌平
私信 提问
IOS博客项目搭建-06-自定义TabBar

(一)、自定义TabBar 系统默认自带的底部TabBar ①、创建自定义IWTabBar,继承UIView类 创建IWTabBar.m //// IWTabBar.m// ItcastWeibo//// Created by kaiyi on 16-1-27.// Copyright (c) 2......

Corwien
2016/01/28
65
0
关于UITabBar各部分自定义的代码片段

一、自定义TabBar选项卡背景 默认UITabBarController的TabBar背景是黑色的,如何自定义成背景图片呢? UITabBarController *tabBarController = [[UITabBarController alloc] init];// 获取选...

萨斯辈的呼唤
2014/08/13
0
0
小程序自定义tabbar占位问题

针对于小程序中自定义tabbar问题,有多种自定义方式。 其中之一就是需要将原先系统自带的tabbar隐藏,调用 但是直接这样调用有时候会出现问题,那就是在小程序底部原先放置tabbar的内容会出现...

林梓阳
04/07
0
0
自定义tabBar

(一)思路:(1)在原来的tabBar空间上面添加一个自定义的tabBar,这样UIViewController的hidesBottomBarWhenPushed属性依然有效; (2)在自定义的添加UIButton,并加上相应的事件即可; ...

麦兜卖鱼丸
2016/03/02
37
0
UITabBar的三种常用方法(两种自定义)即自动切换tabbar各个子控制器

在实际的项目开发中,凡是使用UITabBarController作为导航控制器的,在使用的过程中要注意三大问题点:1 UITabBarController添加子控制的方法 2 自定义的UITabBar的继承问题 3 自定义的UITab...

奋斗的青春年华
2016/07/19
64
0

没有更多内容

加载失败,请刷新页面

加载更多

Visual Paradigm 教程[UML]:如何绘制封装图?(上)

下载Visual Paradigm最新试用版 查看本教程视频文件 在项目开始时,您只有有限数量的图表,一切都简单而美观。然而,当时间过得匆匆时,已经创建了越来越多的图表,并且它们开始变得无法管理...

xiaochuachua
28分钟前
0
0
Pure-ftpd服务安装及虚拟用户设置

安装 sudo apt-get install pure-ftpd 虚拟用户设置 首先,可以在系统中添加相应的用户和组,如用户ftpuser 和组ftpgroup ,专门用来管理ftp服务。也可以是能登录系统的用户,但最好是不能登...

Gm_ning
29分钟前
0
0
一位面试了阿里,滴滴,网易,蚂蚁金服,最终有幸去了网易的Java程序员【面试题分享】

前言 15年毕业到现在也近三年了,最近面试了阿里集团(菜鸟网络,蚂蚁金服),网易,滴滴,点我达,最终收到点我达,网易offer,蚂蚁金服二面挂掉,菜鸟网络一个月了还在流程中... 最终有幸去...

Java领航员
31分钟前
1
0
“大团队”和“敏捷开发”,谁说不可兼得?

阿里妹导读:当小团队的产出跟不上业务需要,团队就面临规模化的问题。从1个团队到3个团队,仍可以通过简单的团队沟通保持高效协作。当产品复杂到需要5个以上团队同时开发时,我们需要一定的...

阿里云云栖社区
35分钟前
0
0
基于虹软人脸识别Demo android人脸识别

参加一个比赛,指定用虹软的人脸识别功能,奈何虹软人脸识别要自己建人脸库,不然就只能离线用,总不能装个样子,简单看了下虹软Demo,下面决定用这种简单方法实现在线人脸识别: Android端(...

是哇兴哥棒棒哒
40分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部