iOS-自定义 UITabBarController
来源:互联网 发布:java float 精度 编辑:程序博客网 时间:2024/06/11 01:00
先来回顾一下UITabBarController
( 稍微详细的在在http://blog.csdn.net/yang198907/article/details/49807011)
伴随UITabBarController存在的一个控件叫做导航栏(UITabBar);
UITabBarController中有N个子控制器,那么在UITabBar中就会有N个UITabBarButton作为子控制器;
结构:
控制原理:1对应VC1,2对应VC2.....;
对应的UITabBarItem有相应的属性设置显示的内容,
eg:
标题文字
@property(nonatomic,copy)NSString*title;
图标
@property(nonatomic,retain)UIImage*image;
选中时的图标
@property(nonatomic,retain)UIImage*selectedImage;
提醒数字
@property(nonatomic,copy)NSString*badgeValue
典型的QQ案例:
什么时候需要自定义UITabBar
当UITabBarItem的默认功能显示不了我们的需求,或者说,我们想更加灵活的使用UITabBarItem的时候;
例如网易彩票:
注意⚠️:文字和房子为一张图片
此时再去使用默认的UITabBarItem的属性设置就会有问题!
自定义UITabBar就派上用场了!
怎么实现自定义UITabBar?
先分析一下UITabBar的功能,点击UITabBarItem则会跳转到对应的控制器;
所以,我们只需要自定义一个UIView或者子类,然后再添加Button,点击Button时再跳转到对应的控制器就就可以了!
废话少说,上点代码:(代码实现了点击底部的button切换控制器)
步骤一:自定义UITabBarController
1)创建YSCTabBarController类继承自UITabBarController
2)创建 YSCTabBar类继承自 UIView,并添加3个Button模拟UITabBarItem;
3)创建三个控制器继承自UIViewController
代码1:
#import "YSCTabBarController.h" #import "YSCTabBar.h" #import "OneViewController.h" #import "TwoViewController.h" #import "ThreeViewController.h" @interface YSCTabBarController () <YSCTabBarDelegate> @end @implementation YSCTabBarController - (void)viewDidLoad { [super viewDidLoad]; [self loadViewVC]; YSCTabBar *tabBar = [[YSCTabBar alloc] initWithFrame:self.tabBar.frame WithCount:self.viewControllers.count]; tabBar.delegate = self; [self.view addSubview:tabBar]; } - (void)loadViewVC { OneViewController *oneVC = [[OneViewController alloc] init]; TwoViewController *twoVC = [[TwoViewController alloc] init]; ThreeViewController *threeVC = [[ThreeViewController alloc] init]; self.viewControllers = @[oneVC,twoVC,threeVC]; } - (void)yscTabbar:(YSCTabBar *)tabar index:(NSInteger)index { self.selectedIndex = index; } @end
代码2:
#import "YSCTabBar.h" @implementation YSCTabBar - (instancetype)initWithFrame:(CGRect)frame WithCount:(NSInteger )count { if (self = [super initWithFrame:frame]) { CGFloat W = [UIScreen mainScreen].bounds.size.width / count; CGFloat H = 49; for (int i = 0; i < count; i ++) { CGFloat X = i * W; UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(X, 0, W, H)]; btn.tag = i; btn.backgroundColor = [UIColor colorWithRed:((float)arc4random_uniform(256) / 255.0) green:((float)arc4random_uniform(256) / 255.0) blue:((float)arc4random_uniform(256) / 255.0) alpha:1.0]; [self addSubview:btn]; [btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside]; } } return self; } - (void)btnClick:(UIButton *)btn{ if ([self.delegate respondsToSelector:@selector(yscTabbar:index:)]) { [self.delegate yscTabbar:self index:btn.tag]; } } @end
代码3、
#import "OneViewController.h" @interface OneViewController () @end @implementation OneViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.view.backgroundColor = [UIColor redColor]; } @end
步骤二
代码创建实例化UIWindow并创建 YSCTabBarController:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; YSCTabBarController *tabVC = [[YSCTabBarController alloc] init]; self.window.rootViewController = tabVC; [self.window makeKeyAndVisible]; return YES;}
效果图:
总结:UITabBarController给我们提供了一个非常好的选择哪个控制的属性,否则,我们还需要根据不同的;
eg:
- (void)yscTabbar:(YSCTabBar*)tabar index:(NSInteger)index {
self.selectedIndex= index;
self.selectedIndex= index;
}
此外,子控件让父控件做一些事情的时候,可以通过代理或者block来实现,本demo使用的是代理的方式;
基于此,我们还可以写出创建YSCTabBar类继承自UIScrollView
实现如下效果:
0 0
- iOS-自定义 UITabBarController
- IOS自定义UITabBarController
- iOS--自定义UITabBarController
- iOS--UITabbarController自定义
- iOS 自定义UITabBarController
- iOS - Swift 自定义UITabBarController
- ios开发之自定义UITabBarController
- iOS 自定义UINavigationController和UITabBarController
- iOS UITabBarController 的 UITabBar 自定义
- iOS UITabBarController tabbar 自定义 详解
- iOS自定义控件 - 自定义UITabBarController中的TabBar
- iOS 自定义UITabBarController以及UITabBar的分析
- [IOS开发] 高度自定义 UITabBarController, 支持StoryBoard
- iOS 自定义UITabbarController中的item (swift)
- iOS开发:自定义UITabBarController标签控制栏
- iOS中 UITabBarController中自定义UITabBar
- [iOS]系统UITabBarController详解及自定义
- IOS 自定义UITabBarController的高度处理
- 截屏方式
- poj3070 Fibonacci
- 《算法竞赛入门经典2ndEdition 》习题3-4 周期串(Periodic Strings, Uva455)
- 异常解决:java.net.ConnectException: Call To Master/127.0.0.1:9000 failed on connection exception
- swift初体验
- iOS-自定义 UITabBarController
- 集群监控之web端动态的显示数据(highchart)
- hdoj Kingdom of Black and White 5583 (模拟&&DP) 好题
- CodeForces 600C Make Palindrome (模拟题)
- DecimalFormat用法
- Lock的基本使用
- nyoj 171 聪明的kk【二维dp&&求最大值】
- 《leetCode》:Subsets II
- 知其所以然之永不遗忘的算法