在AppDelegate.m中设置根视图控制器
RootviewController.h
@interface RootTabbarController : UITabBarController { UIImageView *_selectedImg; }
RootviewController.m
#import "RootTabbarController.h" #import "HomeViewController.h" #import "MessageViewController.h" #import "PersonalViewController.h" #import "DiscoverViewController.h" #import "MoreViewController.h" @interface RootTabbarController () @end @implementation RootTabbarController - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } - (void)viewDidLoad { [super viewDidLoad]; //创建三级控制器 [self _initViewCtrls]; //自定义标签视图 [self _initTabbarView]; } //创建三级控制器 - (void)_initViewCtrls { //1.创建一级控制器 HomeViewController *homeCtrl = [[HomeViewController alloc] init]; MessageViewController *messageCtrl = [[MessageViewController alloc] init]; PersonalViewController *personalCtrl = [[PersonalViewController alloc] init]; DiscoverViewController *discoverCtrl = [[DiscoverViewController alloc] init]; MoreViewController *moreCtrl = [[MoreViewController alloc] init]; NSArray *viewCtrls = @[homeCtrl,messageCtrl,personalCtrl,discoverCtrl,moreCtrl]; //用于存放导航控制器 NSMutableArray *navCtrls = [[NSMutableArray alloc] initWithCapacity:viewCtrls.count]; //2.将视图控制器交给导航控制器控制 for (int i=0; i<viewCtrls.count; i++) { //取出视图控制器 UIViewController *viewCtrl = viewCtrls[i]; UINavigationController *navCtrl = [[UINavigationController alloc] initWithRootViewController:viewCtrl]; [navCtrls addObject:navCtrl]; } //3.创建三级控制器 self.viewControllers = navCtrls; } //自定义标签视图 - (void)_initTabbarView { //1.移除tabbar上面的按钮 NSArray *subView = [self.tabBar subviews]; for (UIView *view in subView) { Class cla = NSClassFromString(@"UITabBarButton"); if ([view isKindOfClass:cla]) { [view removeFromSuperview]; } } //2.设置背景视图 [self.tabBar setBackgroundImage:[UIImage imageNamed:@"mask_navbar"]]; //3.添加按钮 for (int i=0; i<5; i++) { NSString *name = [NSString stringWithFormat:@"home_tab_icon_%d",i+1]; //创建按钮 UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; [button setImage:[UIImage imageNamed:name] forState:UIControlStateNormal]; button.tag = i; [button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside]; button.frame = CGRectMake(64*i, (49-45)/2, 64, 45); [self.tabBar addSubview:button]; } //4.添加选择按钮 _selectedImg = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 64, 45)]; _selectedImg.image = [UIImage imageNamed:@"home_bottom_tab_arrow"]; _selectedImg.backgroundColor = [UIColor clearColor]; [self.tabBar addSubview:_selectedImg]; } - (void)buttonAction:(UIButton *)button { //点击按钮切换试图 self.selectedIndex = button.tag; //设置点击高亮的效果 button.showsTouchWhenHighlighted = YES; //点击后选择的滑动效果 [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:.35]; _selectedImg.center = button.center; [UIView commitAnimations]; } @end
HomeViewController.m
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { self.title = @"首页"; } return self; } - (void)viewDidLoad { [super viewDidLoad]; //创建左侧的按钮 UIButton *leftButton = [UIButton buttonWithType:UIButtonTypeCustom]; leftButton.frame = CGRectMake(0, 0, 130, 43); //设置背景图片 UIImage *image = [UIImage imageNamed:@"button_title"]; //设置拉伸点 image = [image stretchableImageWithLeftCapWidth:50 topCapHeight:0]; [leftButton setBackgroundImage:image forState:UIControlStateNormal]; //创建一个image UIImageView *buttonImageView = [[UIImageView alloc] initWithFrame:CGRectMake(5, 0, 44, 44)]; buttonImageView.image = [UIImage imageNamed:@"button_icon_group"]; buttonImageView.backgroundColor = [UIColor clearColor]; [leftButton addSubview:buttonImageView]; //创建一个label UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(50, 0, 80, 44)]; label.backgroundColor = [UIColor clearColor]; label.text = @"我的微博"; label.font = [UIFont boldSystemFontOfSize:17]; label.textColor = [UIColor whiteColor]; [leftButton addSubview:label]; UIBarButtonItem *leftItem = [[UIBarButtonItem alloc] initWithCustomView:leftButton]; self.navigationItem.leftBarButtonItem = leftItem; //创建右侧的按钮 UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeCustom]; rightButton.frame = CGRectMake(0, 0, 43, 43); //创建背景图片 UIImage *bkImage = [UIImage imageNamed:@"button_m"]; [rightButton setBackgroundImage:bkImage forState:UIControlStateNormal]; [rightButton setImage:[UIImage imageNamed:@"button_icon_plus"] forState:UIControlStateNormal]; UIBarButtonItem *rightitem = [[UIBarButtonItem alloc] initWithCustomView:rightButton]; self.navigationItem.rightBarButtonItem = rightitem; }
MessageViewController.m
PersonalViewController.m
DiscoverViewController.m
MoreViewController.m
#import "MoreViewController.h" #import "ThemeViewController.h" @interface MoreViewController () @end @implementation MoreViewController - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { self.title = @"更多"; } return self; } - (void)viewDidLoad { [super viewDidLoad]; //设置导航栏不穿透 self.edgesForExtendedLayout = UIRectEdgeNone; //创建主题按钮 UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame = CGRectMake(10, 30, 300, 50); button.backgroundColor = [UIColor blueColor]; [button setTitle:@"我的主题" forState:UIControlStateNormal]; [button addTarget:self action:@selector(buttonAction) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:button]; } - (void)buttonAction { ThemeViewController *themeCtrl = [[ThemeViewController alloc] init]; [self.navigationController pushViewController:themeCtrl animated:YES]; }
ThemeViewController.h
@interface ThemeViewController : UIViewController { UIImageView *_checkimg; }
ThemeViewController.m
#import "ThemeViewController.h" @interface ThemeViewController () @end @implementation ThemeViewController - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization <span style="color:#cc0000;">self.hidesBottomBarWhenPushed = YES;</span> } return self; } - (void)viewDidLoad { [super viewDidLoad]; UIColor *color = [UIColor colorWithPatternImage:[UIImage imageNamed:@"backcolor"]]; self.view.backgroundColor = color; //创建子视图上侧的视图 UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 106)]; imageView.image = [UIImage imageNamed:@"topbg"]; [self.view addSubview:imageView]; //创建子视图 for (int i=0; i<8; i++) { UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; NSString *name = [NSString stringWithFormat:@"%d",i+1]; [button setImage:[UIImage imageNamed:name] forState:UIControlStateNormal]; int row = i/2; if (i%2 == 0) { //偶数 button.frame = CGRectMake(5, 130+(62+5)*row, 150, 62); } else { //奇数 button.frame = CGRectMake(165, 130+(62+5)*row, 150, 62); } button.tag = i+100; //添加点击事件 [button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:button]; } //通过tag去button UIButton *button = (UIButton *)[self.view viewWithTag:100]; //创建选中标识图片 _checkimg = [[UIImageView alloc] initWithFrame:CGRectMake(130+button.frame.origin.x, 40+button.frame.origin.y, 18, 18)]; _checkimg.image = [UIImage imageNamed:@"checkmark"]; [self.view addSubview:_checkimg]; } - (void)viewWillAppear:(BOOL)animated { self.edgesForExtendedLayout = UIRectEdgeNone; [self.navigationController.navigationBar setBarStyle:UIBarStyleBlack]; [super viewWillAppear:animated]; } - (void)viewWillDisappear:(BOOL)animated { [self.navigationController.navigationBar setBarStyle:UIBarStyleDefault]; [super viewWillDisappear:animated]; } - (void)buttonAction:(UIButton *)button { <span style="color:#cc0000;"> _checkimg.frame = CGRectMake(130+button.frame.origin.x, 40+button.frame.origin.y, 18, 18);</span> } @end
时间: 2024-10-11 22:08:45