IOS UITabBarController

作者: 小暖风 | 来源:发表于2017-08-19 17:51 被阅读11次

    UITabBarController 标签/分栏控制器

    //UITabBarController (标签栏控制器,父类为UIViewController,能够管理多个视图控制器,是一个软件架构级的组件)

    //tabBarItem.image image的最佳尺寸(30*30/视网膜屏60*60),图片过大,会显示成矩形的黑块,不会显示实际图片

    //tabBarItem为视图控制器的属性,为UITabBarItem的对象,显示在底部的标签栏上,通过tabBarItem可以定制图片和标题的显示

    //对视图控制器的title属性赋值,相当于对视图控制器的navigationItem.title 和tabBarItem.title同时赋值

    //设置tabBarItem处于选中状态和非选中状态下的图片

    [nav2.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"tab_s.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"tab_1.png"]];

    //设置tabBarItem的徽标

    vc4.tabBarItem.badgeValue = @"4";

    //自己创建一个tabBarItem,利用系统样式创建一个对象,tag值,标记tabBarItem,几乎不会去使用

    //利用系统样式创建的tabBarItem,后续再更改image,title 无效果

    //了解 通过初始化标题和图片的方法得到tarBarItem对象,效果与直接对tabBarItem.title/tabBarItem.image赋值是一样的

    //标签栏控制器的viewControllers是一个数组,里面存有各个视图控制器的对象

    //各个视图控制器在标签栏控制器上的显示顺序(左->右)与在数组中的顺序一致

    //UITabBarController管理视图控制器:各个视图控制器在标签栏控制器中是并列的关系,理论上各个视图控制器彼此相互独立,互不影响

    tabController.viewControllers = controllers;

    //当添加到标签栏控制器上的对象多于5个的时候,标签栏控制器会自动创建一个moreTabBarItem,同时也会创建一个moreNavigationController ,第5个和5以后的tabBarItem会以列表的形式展示在more中

    //tabController.moreNavigationController

    //moreNavigationController 不会放在viewControllers数组中,标签栏控制器单独管理它

    //将标签栏控制器赋给window

    //通过下标的方式,设置被选中的item 下标从0开始

    //tabController.selectedIndex = 1;

    //通过指定视图控制器,设置被选中的item

    //tabController.selectedViewController = [controllers objectAtIndex:1];

    //viewController为被选中的tabBarItem所对应的视图控制器

    //让self 0.3秒之后执行showTabBar方法

    //self performSelector:<#(SEL)#> withObject:<#(id)#> afterDelay:<#(NSTimeInterval)#>

    [self performSelector:@selector(showTabBar) withObject:nil afterDelay:0.1];

    //UITabBar 标签栏,父类为UIView

    //标签栏控制器带有一个标签栏,所有视图控制器共用一个标签栏

    //当视图控制器,或者视图控制器的父控制器,添加到标签栏控制器上,可以通过tabBarController属性,取到标签栏控制器

    //self.tabBarController.tabBar,tabBar尺寸固定(320*49)

    //属性hidesBottomBarWhenPushedYES时,当视图控制器被加到栈中时,隐藏底部的标签栏

    //vc7.hidesBottomBarWhenPushed = YES;//此属性写在vc7push之前,因为push的时候,会检测此属性值,根据属性值的进行后续的处理

    //当应用程序的活跃内存开辟达到操作系统承受的阖值时,操作系统会给应用程序发送内存告急的信号,应用程序会调用所有已经存在的视图控制器的didReceiveMemoryWarning 方法

    //拿到标签栏控制器view的所有子视图

    NSArray *subViews =self.tabBarController.view.subviews;

    //设置缓冲动画,将要延迟执行的代码片段放到block中

    [UIView animateWithDuration:0.2

    animations:^{

    //根据点击的btn,改变label的横坐标

    CGRect frame = indicatorLabel.frame;

    frame.origin.x = space + btn.tag *(space +30);

    indicatorLabel.frame = frame;

    }];

    相关文章

      网友评论

        本文标题:IOS UITabBarController

        本文链接:https://www.haomeiwen.com/subject/elotdxtx.html