-(BaseNavigationController*)setTabBarItemWithRootVC:(id)vc Image:(NSString*)imgName SelectedImage:(NSString*)selectedImg { BaseNavigationController *nav = [[BaseNavigationController alloc] init]; [nav.tabBarItem setImage:[[UIImage imageNamed:imgNam
1.先看一下效果 左右滑动交互的TabBarController 2.在iOS7.0以前,要实现这样的效果,只有自定义TabBar了,但这很麻烦。 :(UITabBarController *)tabBarController animationControllerForTransitionFromViewController :当前的tabBarController * animationController:动画百分比控制器 * 返回一个自定义的动画百分比控制器,以控制当前动画进行的百分比。 */ - (nullable id <UIViewControllerInteractiveTransitioning>)tabBarController:(UITabBarController *)tabBarController 在TabBarController中,添加一个pan手势 - (void)viewDidLoad { [super viewDidLoad]; self.delegate = self;
NSInteger previousClickedTag; 1.2 实现 UITabBarControllerDelegate 进行数据刷新 将selectedViewController设置为tabBarController 的delegate self.tabBarController.delegate = self; - (void)tabBarController:(UITabBarController *)tabBarController = self; self.previousClickedTag = 100;//默认没有点击任何tabbar } - (void)tabBarController :(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{ ]) { //进行数据刷新 if ( self.previousClickedTag == tabBarController.selectedIndex
let firstViewController = FirstViewController() let thirdViewController = ThirdViewController() let tabBarController UITabBarController() let navigationController =UINavigationController(rootViewController:firstViewController) tabBarController.viewControllers =[navigationController, thirdViewController] let tabBar = tabBarController.tabBar let item = tabBar.items rootViewController = tabBarController return true }
然后在 viewDidLoad 中设置 TabBarController 的 delegate ,这里我们设置成为 self TabBarController 代码如下: class MainVC: UITabBarController let index = find(tabBarController.viewControllers! 就会根据它去执行过渡动画 func tabBarController(tabBarController: UITabBarController, animationControllerForTransitionFromViewController let fromViewControllerIndex = find(self.tabBarController.viewControllers! let tabBarItemCount = tabBarController.tabBar.items!.
切换到MainStoryboard.storyboard,拖一个 TabBarController 到画布中。 新的 TabBarController 已经事先配置了两个ViewController,每个Tab 按钮一个。 在画布中,原来指向最初的 ViewController 的箭头,现在指向了TabBarController。 这样故事板中只会有一个TabbarController和它的两个 viewcontroller。 现在将新场景连接到TabBarController 。ctrl+左键,从TabBarController拖一条线到NavigationController.
tabBarController(_ tabBarController: UITabBarController, shouldSelectTab tab: UITab) -> Bool { return true } // MARK: 选中Tab func tabBarController(_ tabBarController: UITabBarController, didSelectTab (_ tabBarController: UITabBarController, displayOrderDidChangeFor group: UITabGroup) { print(# = TabBarController() // iOS18新增,设置显示模式 tabBarController.mode = .tabSidebar window rootViewController = tabBarController window?.makeKeyAndVisible() }}UIViewController。
import UIKit class TabBarController: UITabBarController { override func viewDidLoad() { func tabBarController(_ tabBarController: UITabBarController, shouldSelectTab tab: UITab) -> Bool { return true } // MARK: 选中Tab func tabBarController(_ tabBarController: UITabBarController = TabBarController() // iOS18新增,设置显示模式 tabBarController.mode = .tabSidebar window rootViewController = tabBarController window?.makeKeyAndVisible() } } UIViewController。
设置tabbar选中颜色 iOS7设置如下: [self.tabBarController.tabBarsetSelectedImageTintColor:[UIColor greenColor]]; { NSArray * tabBarSubviews = [tabBarController.tabBar subviews]; int index4SelView; if(tabBarController.selectedIndex+1 > 4) {//selected the last tab. index4SelView = [tabBarSubviews count]-1; } else if([tabBarController.viewControllers count] index4SelView = [tabBarSubviews count] - [tabBarController.viewControllers count] + tabBarController.selectedIndex
为了给动画一个合适的方向,你可以比较两个视图控制器的索引: - (id <UIViewControllerAnimatedTransitioning>)tabBarController:(UITabBarController *)tabBarController animationControllerForTransitionFromViewController:(UIViewController indexOfObject:fromVC]; NSUInteger toVCIndex = [tabBarController.viewControllers indexOfObject:toVC :(UITabBarController *)tabBarController animationControllerForTransitionFromViewController indexOfObject:fromVC]; NSUInteger toVCIndex = [tabBarController.viewControllers indexOfObject:toVC
我在AppDelegate中将TabBarController设置了window的rootController,因此在AppDelegate中设置tabBarController的代理(遵守协议:UITabBarControllerDelegate ),实现协议中的方法: #pragma mark --- UITabBarControllerDelegate - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{ UINavigationController
RDVTabBarController:一个十分完善的tabBarController,可以自定义角标个数,爽的停不下来。 :(RDVTabBarController )tabBarController shouldSelectViewController:(UIViewController )viewController; /** Tells the delegate that the user selected an item in the tab bar. */ (void)tabBarController:(RDVTabBarController )tabBarController didSelectViewController:(UIViewController )viewController; ``` 还有需要多等待你去发现... 结语 RDVTabBarController是一个很棒的第三方tabBarController,值得我们学习和思考。
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; UITabBarController *tabbarController UIViewController alloc]init]; controller4.view.backgroundColor = [UIColor lightGrayColor]; [tabbarController setViewControllers:@[controller1,controller2,controller3,controller4]]; self.window.rootViewController = tabbarController self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; UITabBarController *tabbarController controller4.tabBarItem.selectedImage = [UIImage imageNamed:@"ico.bundle/home_selected@2x.png"]; [tabbarController
() tabbarController.tabBar.barTintColor = UIColor.white // 注意:视图控制器超过5个时(不包含5)会自动生成一个more视图标签 tabbarController.viewControllers = [nav01, nav02] // 属性设置 // 设置默认被选中视图控制器 tabbarController.selectedIndex = 0; // 设置切换视图 tabBar 属性 // 1 打开用户交互 tabbarController.tabBar.isUserInteractionEnabled = true; // 2 设置背景颜色 tabbarController.tabBar.backgroundColor = UIColor.black tabbarController.tabBar.barTintColor : "") // // 4 选中时的背景图片 // tabbarController.tabBar.selectionIndicatorImage = UIImage(named
:(UITabBarController *)tabBarController didSelectControl:(UIControl *)control { UIView *animationView cyl_tabImageView]; [self addScaleAnimationOnView:animationView repeatCount:1]; if(tabBarController.selectedIndex [UIScreen mainScreen] bounds]]; [self.window makeKeyAndVisible]; MainTabBarController *tabBarController = [[MainTabBarController alloc] initTabBar]; [self.window setRootViewController:tabBarController dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [tabBarController
n ]; 3.UITabBarController实现并列画面跳转 //将5个ViewController实例放入TabBar的viewControllers属性中 self.tabBarController.viewControllers = @[navFirst, navSecond, navThird, navFourth, navFifth]; self.window.rootViewController = self.tabBarController ; //将根控制器的视图加到应用程序的主窗口 [self.window addSubview: self.tabBarController.view]; 4.UINavigationController
C代码 // 创建一个UITabBarController对象 UITabBarController *tabBarController = [[UITabBarController alloc] init]; // tabBarController.delegate = self; // 创建一系列要添加到每个具体Tab卡的视图控制器 MyViewController *vc1 = tabBarController:didSelectViewController: 是当用户选择一个新的选项卡时,控制器会发送这个消息。 C代码 - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController viewController { // 捕捉selectedIndex,可确定当前所选选项卡 NSNumber *tabNumber = [NSNumber numberWithInt:[tabBarController
完成之后的效果 既然导航栏的那一横线能去除,那tabbar那一横线也是能去除的了(其实也是shadowImage来的)··· 方法一: 自定义UITabBarController 方法二: [self.tabBarController.tabBar setBackgroundImage:[UIImage new]]; [self.tabBarController.tabBar setShadowImage:[UIImage new]]; 反之,如果我们想自定义那一横线的颜色也是可以的
$0.removeFromSuperview() } } } } 使用 // 默认4个tabbarItem self.tabBarController tabBar.showBadgOn(index: 2) // 如果不是则用这个方法 // self.tabBarController?.
selectedViewController属性 通过该属性可以获得当前选中的viewController 每个视图控制器都有一个tabBarController属性,通过它可以访问所在的UITabBarController beginAnimations:nil context:NULL]; [UIView setAnimationDuration:0.5]; for(UIView *view in self.tabBarController.view.subviews beginAnimations:nil context:NULL]; [UIView setAnimationDuration:0.5]; for(UIView *view in self.tabBarController.view.subviews 自定义TbarBar 视图切换时的动画的关键方法(后续会整理出视图切换时的动画实现) - (id <UIViewControllerAnimatedTransitioning>)tabBarController :(UITabBarController *)tabBarController animationControllerForTransitionFromViewController:(UIViewController