UITabBarController
UITabBarController : UIViewController
本身是 View,被集成在 UITabBarController 中使用
属性
- 基础属性
NSArray *arr = self.tabBarController.viewControllers;// 所有 vc
UITabBar *tabBar = self.tabBarController.tabBar;// tabBar,可展开研究深入内容
- 选中相关
UIViewController *select = self.tabBarController.selectedViewController;// 当前选择 vc
NSInteger index = self.tabBarController.selectedIndex;// 当前选择 index
- 更多相关
UINavigationController *nav = self.tabBarController.moreNavigationController;//更多导航
NSArray *arr2 = self.tabBarController.customizableViewControllers;// 可排序的 vc
方法
// 直接修改 vc
[self.tabBarController setViewControllers:@[testVC1, testVC2]];
代理 UITabBarControllerDelegate
- 点击项
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
NSLog(@"shouldSelectViewController");
return YES;
}
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
NSLog(@"didSelectViewController");
}
- 更多项
- (void)tabBarController:(UITabBarController *)tabBarController willBeginCustomizingViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers {
NSLog(@"willBeginCustomizingViewControllers");
}
- (void)tabBarController:(UITabBarController *)tabBarController willEndCustomizingViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers changed:(BOOL)changed {
NSLog(@"willEndCustomizingViewControllers");
}
- (void)tabBarController:(UITabBarController *)tabBarController didEndCustomizingViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers changed:(BOOL)changed {
NSLog(@"didEndCustomizingViewControllers");
}
- 屏幕旋转
暂不清楚使用方式;
// 支持的方向
- (UIInterfaceOrientationMask)tabBarControllerSupportedInterfaceOrientations:(UITabBarController *)tabBarController {
return UIInterfaceOrientationMaskLandscapeLeft;
}
// 优先的方向
- (UIInterfaceOrientation)tabBarControllerPreferredInterfaceOrientationForPresentation:(UITabBarController *)tabBarController {
return UIInterfaceOrientationLandscapeRight;
}
- 自定义转场,酷炫
UIViewControllerTransitioning.h
中深入了解
// 添加交互转场,例如左侧边侧滑返回,可以根据手势实现是否转场的中间状态
- (nullable id <UIViewControllerInteractiveTransitioning>)tabBarController:(UITabBarController *)tabBarController
interactionControllerForAnimationController: (id <UIViewControllerAnimatedTransitioning>)animationController {
return [[TestInteractiveTransition alloc] init];
}
// 普通动画转场
- (nullable id <UIViewControllerAnimatedTransitioning>)tabBarController:(UITabBarController *)tabBarController
animationControllerForTransitionFromViewController:(UIViewController *)fromVC
toViewController:(UIViewController *)toVC {
return [[TestTransition alloc] init];
}
拓展 UIViewController (UITabBarControllerItem)
- 属性
self.tabBarItem;
self.tabBarController;