//.h#import 
#define ScrollWidht self.view.bounds.size.width#define ScrollHight self.view.bounds.size.height#define CustomTabBarHight 49#define ImageWidth 30#define ImageHight 30#define ImageNumber 4@interface MyTabBarViewController : UITabBarController@property (assign,readwrite,nonatomic)UIView * selectionIndicatorImage;@end
//.m#import "MyTabBarViewController.h"#import "FristViewController.h"#import "SecondViewController.h"#import "ThridViewController.h"#import "FouthViewController.h"@interface MyTabBarViewController (){    UIButton * resetButton;}@end@implementation MyTabBarViewController- (instancetype)init{    self = [super init];    if (self) {            }    return self;}- (void)viewDidLoad{    [super viewDidLoad];        [self createViewControlls];        [self createTabBar];}- (UINavigationController *)createNavigationControllerWithVCClassName:(NSString * )className{    Class vcClass = NSClassFromString(className);        UIViewController * vcClassName = [[vcClass alloc]init];        return [[UINavigationController alloc]initWithRootViewController:vcClassName];}- (void)createViewControlls{    NSArray * arrayOfClass = @[@"FristViewController",@"SecondViewController",@"ThridViewController",@"FouthViewController"];        NSMutableArray * vcArray = [[NSMutableArray alloc]init];        for (int i = 0; i < arrayOfClass.count; i++)    {        UINavigationController * nav = [self createNavigationControllerWithVCClassName:arrayOfClass[i]];                [vcArray addObject:nav];    }        self.viewControllers = vcArray;}- (void)createTabBar{    self.tabBar.hidden = YES;        UIImageView  * customtabBarView = [[UIImageView alloc]init];        //customtabBarView.backgroundColor = [UIColor colorWithRed:1 green:1 blue:1 alpha:0.8];        customtabBarView.backgroundColor = [UIColor whiteColor];        customtabBarView.alpha = 0.8;        customtabBarView.userInteractionEnabled = YES;        float customtabBarViewX = 0;    float customtabBarViewY = ScrollHight - CustomTabBarHight;        customtabBarView.frame = CGRectMake(customtabBarViewX, customtabBarViewY, ScrollWidht, CustomTabBarHight);        [self.view addSubview:customtabBarView];        float btnSpace = (ScrollWidht - ImageWidth*ImageNumber)/5.0;        float btnY = (CustomTabBarHight - ImageHight)/2.0;        for (int i = 0; i < ImageNumber; i++)    {        UIButton * btn = [UIButton buttonWithType:UIButtonTypeSystem];                float btnX = btnSpace + (btnSpace + ImageWidth)*i;                btn.frame = CGRectMake(btnX, btnY, ImageWidth, ImageHight);                btn.tag = 100+i;                [btn setBackgroundImage:[UIImage p_w_picpathNamed:[NSString stringWithFormat:@"tab_%d.png",i]] forState:UIControlStateNormal];                [btn setBackgroundImage:[UIImage p_w_picpathNamed:[NSString stringWithFormat:@"tab_c%d.png",i]] forState:UIControlStateSelected];                [btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];                if (i == 0)        {            btn.selected = YES;            resetButton = btn;                        _selectionIndicatorImage = [self setSelectedImage];                        _selectionIndicatorImage.frame = btn.frame;                        [customtabBarView addSubview:_selectionIndicatorImage];        }                [customtabBarView addSubview:btn];    }}- (UIView *)setSelectedImage{    static  UIView * view = nil;    if (!view)    {        view  = [[UIView alloc]init];        view.backgroundColor = [UIColor orangeColor];    }       return view;}- (void)btnClick:(UIButton *)btn{    resetButton.selected = NO;    resetButton = btn;    btn.selected = YES;        CGPoint centerOfselectionIndicatorImage = btn.center;        [UIView animateWithDuration:0.25 animations:^{               _selectionIndicatorImage.center = centerOfselectionIndicatorImage;            }];        self.selectedIndex = btn.tag - 100;}@end

总结:使用预定义使得代码具有可扩展性,编程过程中.m文件尽量避免出现数字,命名一定要规范,条理要清晰!