iOS 自定义tabBar

来源:互联网 发布:土佐之梦 知轩藏书 编辑:程序博客网 时间:2024/04/28 18:35


苹果虽然帮我们封装好了菜单栏,但是有些时候我们不想用封装好的怎么办?自定义吧!!

直接上代码了!!

<span style="color:#ff0000;">HFG_TabBar.h</span>#import <UIKit/UIKit.h>@interface HFG_TabBar : UITabBarController@end

<span style="color:#ff0000;">HFG_TabBar.m</span>#import "HFG_TabBar.h"@interface HFG_TabBar (){    UIButton *btn;}@property (nonatomic,strong)UIButton *selectedBtn;@end@implementation HFG_TabBar- (void)viewDidLoad {    [super viewDidLoad];    // Do any additional setup after loading the view.}- (void) viewWillLayoutSubviews{        [self.tabBarController.tabBar removeFromSuperview]; // 移除原先的tabBar    CGFloat tabBarY = [UIScreen mainScreen].bounds.size.height - 49;    UIView *tabBarView = [[UIView alloc]initWithFrame:CGRectMake(0, tabBarY, [UIScreen mainScreen].bounds.size.width, 49)];//    视图设置相关都在这里    [tabBarView setBackgroundColor:[UIColor colorWithRed:0.748 green:0.850 blue:1.000 alpha:1.000]];    [self.view addSubview:tabBarView];    for (int i = 0; i < 2; i ++) {        btn = [[UIButton alloc]init];                //给按钮添加图片 没有图片就没加//                NSString *imageName = [NSString stringWithFormat:@"HFG_TabBar%d", i ];//                NSString *imageNameSel = [NSString stringWithFormat:@"HFG_TabBar%dSelect", i ];//                [btn setImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];//                [btn setImage:[UIImage imageNamed:imageNameSel] forState:UIControlStateSelected];//                [btn setBackgroundColor:[UIColor greenColor]];        if (i == 0) {            [btn setTitle:@"标题1" forState:UIControlStateNormal];            [btn setTitleColor:[UIColor orangeColor] forState:UIControlStateSelected             ];            [btn setBackgroundColor:[UIColor colorWithRed:0.276 green:1.000 blue:0.538 alpha:1.000]];        }        if (i == 1) {            [btn setTitle:@"标题2" forState:UIControlStateNormal];            [btn setTitleColor:[UIColor orangeColor] forState:UIControlStateSelected];            [btn setBackgroundColor:[UIColor colorWithRed:0.120 green:0.538 blue:1.000 alpha:1.000]];        }        CGFloat X = i *tabBarView.frame.size.width/2;        btn.frame = CGRectMake(X, 0, tabBarView.frame.size.width/2, tabBarView.frame.size.height);        [tabBarView addSubview:btn];        //   设置刚进入时,第一个按钮为选中状态        if (0 == i) {            btn.selected = YES;            self.selectedBtn = btn; // 设置该按钮为选中的按钮        }        btn.tag = i;        [btn addTarget:self action:@selector(clickBtn:) forControlEvents:UIControlEventTouchUpInside];    }}- (void) clickBtn:(UIButton *)sender{        if (sender.tag == 0) {        self.selectedIndex = 0;    }    if (sender.tag == 1) {        self.selectedIndex = 1;    }    self.selectedBtn.selected = NO;    sender.selected = YES;    self.selectedBtn = sender;    }@end
这样,我们的自定义tabBar就定义好了,但重要的是,怎么和视图控制器关联起来?其实很简单,先创建好相关的视图控制器,然后代码如下:

<span style="color:#ff0000;">AppDelegate.m</span>
#import "AppDelegate.h"#import "HFG_TabBar.h"#import "HFG_RandomCallViewController.h"#import "HFG_AllClassViewController.h"@interface AppDelegate ()@end@implementation AppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {        HFG_RandomCallViewController *RandomCall = [[HFG_RandomCallViewController alloc]init];    HFG_AllClassViewController *AllClass = [[HFG_AllClassViewController alloc]init];        UINavigationController *randomCall = [[UINavigationController alloc]initWithRootViewController:RandomCall];    UINavigationController *allClass = [[UINavigationController alloc]initWithRootViewController:AllClass];     HFG_TabBar *tabBarController = [[HFG_TabBar alloc]init];        tabBarController.viewControllers = @[randomCall,allClass];    self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];        self.window.rootViewController = tabBarController;    [self.window makeKeyAndVisible];    return YES;}




0 0
原创粉丝点击