自定义标签控制器
2016-06-16 16:43
465 查看
自定义标签控制器的基类用其他标签控制器来继承于他
MyTabbarController
#define TabBarButtonNumber 5 #define TabBarButtonHight 64
MyTabbarController.h
#import <UIKit/UIKit.h> @interface MyTabbarController : UITabBarController @end
MyTabbarController.m
@interface MyTabbarController () @property (nonatomic, strong) UIView *myTabBar; @property (nonatomic, retain) NSArray *normalImageNameArray; @property (nonatomic, retain) NSArray *selectedImageNameArray; @end @implementation MyTabbarController - (void)viewDidLoad { [super viewDidLoad]; NSArray *normalImageNameArray = @[@"1000-0.png", @"1001-0.png", @"1002-0.png", @"1003-0.png", @"1004-0.png"]; NSArray *selectedImageNameArray = @[@"1000-1.png", @"1001-1.png", @"1002-1.png", @"1003-1.png", @"1004-1.png"]; self.normalImageNameArray = normalImageNameArray; self.selectedImageNameArray = selectedImageNameArray; self.tabBar.hidden = YES; [self.view addSubview:self.myTabBar]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } #pragma mark -- Getter -(UIView *)myTabBar{ //宏定义按钮的数量与高度 CGFloat X = TabBarButtonNumber; CGFloat btnHight = TabBarButtonHight; if (!_myTabBar) { _myTabBar = [[UIView alloc]initWithFrame:CGRectMake(0, KScreen_H-64, KScreen_W, 64)]; for (int i = 0; i<X; i++) { UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; btn.frame = CGRectMake((KScreen_W/X)*(i), 0, KScreen_W/X, btnHight); NSString *normalImageName = self.normalImageNameArray[i]; NSString *selectedImageName = self.selectedImageNameArray[i]; [btn setImage:IMAGE(normalImageName) forState:UIControlStateNormal]; [btn setImage:IMAGE(selectedImageName) forState:UIControlStateSelected]; [_myTabBar addSubview:btn]; if (btn.selected ==YES) { [btn setImage:IMAGE(normalImageName) forState:UIControlStateNormal]; [btn setImage:IMAGE(normalImageName) forState:UIControlStateHighlighted]; }else{ [btn setImage:IMAGE(selectedImageName) forState:UIControlStateHighlighted]; [btn setImage:IMAGE(selectedImageName) forState:UIControlStateHighlighted|UIControlStateSelected]; } [btn addTarget:self action:@selector(action_Btn:) forControlEvents:UIControlEventTouchDown]; btn.tag = i+1000; } } return _myTabBar; } //让btn和tabBar联系起来 -(void)action_Btn:(UIButton *)sender{ self.selectedIndex = sender.tag - 1000; } #pragma mark -- Setter // 遍历改变btn状态 -(void)setSelectedIndex:(NSUInteger)selectedIndex{ [super setSelectedIndex:selectedIndex]; for (int i = 1000; i<1005; ++i) { UIButton *btn = [self.myTabBar viewWithTag:i]; if (i == selectedIndex+1000) { btn.selected = YES; }else{ btn.selected = NO; } } }
子类控制器方法
- (void)viewDidLoad { [super viewDidLoad]; NSMutableArray *tabbarviewvcs = [NSMutableArray arrayWithCapacity:TabBarButtonNumber]; RecordViewController *recordvc1 = [[RecordViewController alloc]init]; [tabbarviewvcs addObject:recordvc1]; AccessViewController *recordvc2 = [[AccessViewController alloc]init]; [tabbarviewvcs addObject:recordvc2]; MedicineViewController *recordvc3 = [[MedicineViewController alloc]init]; [tabbarviewvcs addObject:recordvc3]; KnowlageViewController *recordvc4 = [[KnowlageViewController alloc]init]; [tabbarviewvcs addObject:recordvc4]; seedoctorViewController *recordvc5 = [[seedoctorViewController alloc]init]; [tabbarviewvcs addObject:recordvc5]; self.viewControllers = tabbarviewvcs; }
相关文章推荐
- winform异型不规则界面设计的实现方法
- 在ASP.NET 2.0中操作数据之二十:定制数据修改界面
- Android中设置只有程序第一次运行才显示的界面实现思路
- hta 实现的五子棋界面
- android开发之欢迎界面的小例子
- C#中载入界面的常用方法
- Android绘制炫酷引导界面
- android编程实现局部界面动态切换的方法
- Android判断现在所处界面是否为home主桌面的方法
- Android用户注册界面
- Android编程实现泡泡聊天界面实例详解(附源码)
- android 引导界面的实现方法
- 详解iOS App中UiTabBarController组件的基本用法
- iOS应用开发中UITabBarController标签栏控制器使用进阶
- VC 界面库皮肤库相关信息珍藏
- 在ASP.NET 2.0中操作数据之二十:定制数据修改界面
- Android中界面实现全屏显示的两种方式
- UITabBarController注意的地方
- 简单做出不丑设计