//.h
#import <UIKit/UIKit.h>
#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文件尽量避免出现数字,命名一定要规范,条理要清晰!
转载于:https://blog.51cto.com/8947509/1588882