• 自定义的tabBarController的几种方法


    本文转载自:http://blog.sina.com.cn/s/blog_79c5bdc30100t88i.html

    我自己实现的一种可以很方便的实现更换TabBarController图片的方法,代码如下:

    #import <UIKit/UIKit.h>

    @interface CustomTabBarViewController : UITabBarController {

        UIImage                             *_tabBarBackgroundImage;  //整个tabBar的背景

        NSMutableArray                       *_unSelectedImageArray;   //非选中效果的tabBarItem数组

        NSMutableArray                       *_selectedImageArray;     //选中效果的tabBarItem数组

        NSMutableArray                       *_itemBgImageViewArray;     //item背景UIIMageView数组   

        int                                  _lastSelectedIndex;   //上一次选中的tabBarItem的index

        int                                  _hiddenIndex;

    }

    @property (nonatomic, retain) UIImage                           *tabBarBackgroundImage;

    @property (nonatomic, retain) NSMutableArray                    *unSelectedImageArray;

    @property (nonatomic, retain) NSMutableArray                    *selectedImageArray;

    @property (nonatomic, retain) NSMutableArray                    *itemBgImageViewArray;

    @property (nonatomic, assign) int                               lastSelectedIndex;

    @property (nonatomic, assign) int                               hiddenIndex;

    - (id)initWithTabBarBackgroundImage:(UIImage *)barBackgroundImage 

                   unSelectedImageArray:(NSMutableArray *)unImageArray

                     selectedImageArray:(NSMutableArray *)imageArray;

    //隐藏某个tabBarItem的图片

    -(void)hiddeItemImageView:(int)index;

    //显示某个tabBarItem的图片

    -(void)showItemImageView:(int)index;

    @end

    #import "CustomTabBarViewController.h"

    #define TabBarBackgroundImageViewTag 11111

    @implementation CustomTabBarViewController

    @synthesize tabBarBackgroundImage                       = _tabBarBackgroundImage;

    @synthesize unSelectedImageArray                        = _unSelectedImageArray;

    @synthesize selectedImageArray                          = _selectedImageArray;

    @synthesize itemBgImageViewArray                        = _itemBgImageViewArray;

    @synthesize lastSelectedIndex                           = _lastSelectedIndex;

    @synthesize hiddenIndex                                 = _hiddenIndex;

    - (void)dealloc

    {   

        self.tabBarBackgroundImage = nil;

        self.unSelectedImageArray = nil;

        self.selectedImageArray = nil;

        self.itemBgImageViewArray = nil;

        [super dealloc];

    }

    - (void)didReceiveMemoryWarning

    {

        // Releases the view if it doesn't have a superview.

        [super didReceiveMemoryWarning];

        

        // Release any cached data, images, etc that aren't in use.

        self.tabBarBackgroundImage = nil;

        

    }

    - (id)initWithTabBarBackgroundImage:(UIImage *)barBackgroundImage 

                   unSelectedImageArray:(NSMutableArray *)unImageArray

                     selectedImageArray:(NSMutableArray *)imageArray {

        self = [super init];

        if (self) {

            

    //        self.tabBarBackgroundImage = barBackgroundImage;

    //        self.unSelectedImageArray = unImageArray;

    //        self.selectedImageArray = imageArray;

    //        

    //        self.itemBgImageViewArray = [NSMutableArray array];

    //        _lastSelectedIndex = 0;

    //        _hiddenIndex = -1;

        }

        return self;

    }

    - (id)init {

        self = [super init];

        if (self) {

    //        self.tabBarBackgroundImage = [UIImage imageNamed:@"menu_bg.png"];

    //        

    //        NSMutableArray *aunSelectedImageArray = [[NSMutableArray alloc] initWithObjects:[UIImage imageNamed:@"menu_paiyou.png"], 

    //                                                 [UIImage imageNamed:@"menu_chat.png"], 

    //                                                 [UIImage imageNamed:@"menu_map.png"], 

    //                                                 [UIImage imageNamed:@"menu_renwu.png"],

    //                                                 [UIImage imageNamed:@"menu_huibao.png"], nil];

    //        self.unSelectedImageArray = aunSelectedImageArray;

    //        [aunSelectedImageArray release];

    //        

    //        NSMutableArray *aselectedImageArray = [[NSMutableArray alloc] initWithObjects:[UIImage imageNamed:@"menu_paiyou_pressed.png"], 

    //                                               [UIImage imageNamed:@"menu_chat_pressed.png"], 

    //                                               [UIImage imageNamed:@"menu_map_pressed.png"], 

    //                                               [UIImage imageNamed:@"menu_renwu_pressed.png"], 

    //                                               [UIImage imageNamed:@"menu_huibao_pressed.png"], nil];

    //        self.selectedImageArray = aselectedImageArray;

    //        [aselectedImageArray release];

    //        

    //        self.itemBgImageViewArray = [NSMutableArray array];

    //        _lastSelectedIndex = 0;

    //        _hiddenIndex = -1;

            

        }

        return self;

    }

    #pragma mark - itemIndex methods

    - (void)setLastSelectedIndex:(int)lastSelectedIndex {

        if (_lastSelectedIndex != lastSelectedIndex) {

            //将上次的选中效果取消

            UIImageView *lastSelectedImageView = (UIImageView *)[_itemBgImageViewArray objectAtIndex:_lastSelectedIndex];;

            lastSelectedImageView.image = [_unSelectedImageArray objectAtIndex:_lastSelectedIndex];

            

            _lastSelectedIndex = lastSelectedIndex;

        }

    }

    - (void)setSelectedIndex:(NSUInteger)selectedIndex {

        [super setSelectedIndex:selectedIndex];

        //将上次的选中效果取消

        self.lastSelectedIndex = selectedIndex;

        //将本次的选中效果显示

        UIImageView *selectedImageView = (UIImageView *)[_itemBgImageViewArray objectAtIndex:selectedIndex];

        selectedImageView.image = [_selectedImageArray objectAtIndex:selectedIndex];

                 

    }

    //隐藏某个tabBarItem的图片

    - (void)hiddeItemImageView:(int)index {

        if (_hiddenIndex != index) {

            _hiddenIndex = index;

            

            UIImageView *hiddenImageView = (UIImageView *)[_itemBgImageViewArray objectAtIndex:_hiddenIndex];

            hiddenImageView.hidden = YES;

        }

    }

    //显示某个tabBarItem的图片

    - (void)showItemImageView:(int)index {

        if (_hiddenIndex == index) {

            

            UIImageView *hiddenImageView = (UIImageView *)[_itemBgImageViewArray objectAtIndex:_hiddenIndex];

            hiddenImageView.hidden = NO;

            

            _hiddenIndex = -1;

        }

    }

    #pragma mark - View lifecycle

    // Implement loadView to create a view hierarchy programmatically, without using a nib.

    - (void)loadView

    {

        [super loadView];

            

        self.tabBarBackgroundImage = [UIImage imageNamed:@"menu_bg.png"];

        

        NSMutableArray *aunSelectedImageArray = [[NSMutableArray alloc] initWithObjects:[UIImageimageNamed:@"menu_paiyou.png"], 

                                                 [UIImage imageNamed:@"menu_chat.png"], 

                                                 [UIImage imageNamed:@"menu_map.png"], 

                                                 [UIImage imageNamed:@"menu_renwu.png"],

                                                 [UIImage imageNamed:@"menu_huibao.png"], nil];

        self.unSelectedImageArray = aunSelectedImageArray;

        [aunSelectedImageArray release];

        

        NSMutableArray *aselectedImageArray = [[NSMutableArray alloc] initWithObjects:[UIImageimageNamed:@"menu_paiyou_pressed.png"], 

                                               [UIImage imageNamed:@"menu_chat_pressed.png"], 

                                               [UIImage imageNamed:@"menu_map_pressed.png"], 

                                               [UIImage imageNamed:@"menu_renwu_pressed.png"], 

                                               [UIImage imageNamed:@"menu_huibao_pressed.png"], nil];

        self.selectedImageArray = aselectedImageArray;

        [aselectedImageArray release];

        

        self.itemBgImageViewArray = [NSMutableArray array];

        _lastSelectedIndex = 0;

        _hiddenIndex = -1;

    }

    #define ItemWidth 50

    #define ItemHeight 49

    #define SideMarginX 7

    #define SideMarginY 0.5

    #define Spacing 14

    // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.

    - (void)viewDidLoad

    {

        [super viewDidLoad];

        UIImageView *tabBarBackgroundImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0,self.tabBar.frame.size.width, self.tabBar.frame.size.height)];

        tabBarBackgroundImageView.tag = TabBarBackgroundImageViewTag;

        tabBarBackgroundImageView.contentMode = UIViewContentModeScaleAspectFit;

        tabBarBackgroundImageView.image = _tabBarBackgroundImage;

        [self.tabBar insertSubview:tabBarBackgroundImageView atIndex:0];

        [tabBarBackgroundImageView release];

     for (int i = 0; i < 5; i++) {

    UIImageView *itemBg  = [[UIImageView alloc] initWithFrame:CGRectMake(SideMarginX +ItemWidth * i + Spacing * i, SideMarginY, ItemWidth, ItemHeight)];

        itemBg.contentMode = UIViewContentModeScaleAspectFit;

        itemBg.image = [_unSelectedImageArray objectAtIndex:i];

        [self.tabBar insertSubview:itemBg atIndex:1];

        [_itemBgImageViewArray addObject:itemBg];

        [itemBg release];

    }

        self.selectedIndex = 0;

    }

    - (void)viewDidUnload

    {

        [super viewDidUnload];

        // Release any retained subviews of the main view.

        // e.g. self.myOutlet = nil;

        self.itemBgImageViewArray = nil;

    }

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

    {

        // Return YES for supported orientations

        return (interfaceOrientation == UIInterfaceOrientationPortrait);

    }

    #pragma mark - UITabBarDelegate

    - (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {

        self.selectedIndex = [tabBar.items indexOfObject:item];

    }

    @end

    方法二:http://www.cocoachina.com/bbs/read.php?tid-62061-page-1.html

    方法三:http://hi.baidu.com/yunhuaikong/blog/item/b0642bcbfc5ae49fc817684c.html
    自定义Badge:https://github.com/boctor/idev-recipes/tree/master/CustomTabBarNotification
    一些自定义控件:https://github.com/boctor/idev-recipes/tree/master/CustomTabBarNotification
  • 相关阅读:
    博客美化
    hello world
    mysql数据库索引
    Golang:线程 和 协程 的区别
    计算机网络详解
    Redis持久化机制
    nginx 详解
    多级缓存的分层架构
    svn忽略文件不提交至服务器的方法
    Mysql 事务及其原理
  • 原文地址:https://www.cnblogs.com/langtianya/p/3993991.html
Copyright © 2020-2023  润新知