美文网首页iOS的心路里程iOS程序猿ios工作
iOS控件--UITabBar标签条/UITabBarContr

iOS控件--UITabBar标签条/UITabBarContr

作者: 罂粟之城 | 来源:发表于2018-12-29 16:32 被阅读2次

当程序需要分成几个相对独立的部分时,可以考虑使用 UITabBarController 组合多个视图控制器,UITabBarController 会在底部提供一个 UITabBar,用户点击不同的标签项,整个应用可以呈现完全不同的部分。

UITabBar 控件代表一个标签条,它是 UITabBarItem 的容器,可以用于组合多个 UITabBarItem 对象,一个 UITabBarItem 对象就代表一个标签项。

> UITabBar的使用:

    UITabBar控件可以设置这两个属性:Tint(对应于UITabBar的tintColor属性设置背景色),Image Tint(对应于UITabBar的selectedImageTintColor属性,用于设置UITabBar选中项上图标的高亮颜色)
    UITabBar访问UITabBarItem标签项,属性:items,selectedItem,setItems:animated:
    创建UITabBarItem:initWithTabBarSystemItem:tag:/initWithTitle:image:tag:/badgeValue创建了tag标签以便识别
    使用步骤:
        1.创建一个UITabBar对象。
        2.创建多个UITabBarItem对象,并将这些UITabBarItem设置给UITabBar对象
        3.为UITabBar对象设置一个UITabBarDelegate协议的对象。当用户选中某一个标签项时,将会激发UITabBarDelegate协议中的tabBar:didSelectItem:方法。

> UITabBarController控制器的代码使用:

1. 创建继承自UITabBarViewController的控制器
2. 设置这个控制器为root控制器
3. 在tabBarController控制器中设置各个标签页控制器(具体设置如下代码)
    FirstViewController *first = [[FirstViewController alloc]init];
    UINavigationController *nav1 = [[UINavigationController alloc]initWithRootViewController:first];
    nav1.tabBarItem.title = @"First";
    ///
    SecondViewController *second = [[SecondViewController alloc]init];
    UINavigationController *nav2 = [[UINavigationController alloc]initWithRootViewController:second];
    nav2.tabBarItem.title = @"Second";
    ///
    self.viewControllers = @[nav1,nav2];

> UITabBar和UITabBarController

把一个视图控制器作为容器视图控制器,在这个容器视图控制器上添加多个其他视图控制器,并把其他控制器的视图添加上来

使用场景:当我们某个视图控制器要使用多个子界面,并且多个子界面的处理事务的逻辑比较复杂,我们就可以通过这种方式将不同的逻辑处理拆分开,在各自的视图控制器中处理自己的逻辑,而不是所有逻辑都在当前视图控制器中处理。

 TableViewController *tableViewController = [[TableViewController alloc] init];
 [self addChildViewController:tableViewController]; // self在这里就是容器视图控制器
 [self.view addSubView:tableViewController.tableView];

> 设置自定义UITabBarController

    //选中item背景颜色
//    CGSize indicatorImageSize = CGSizeMake(self.tabBar.bounds.size.width/self.tabBar.items.count, self.tabBar.bounds.size.height);
//    self.tabBar.selectionIndicatorImage = [self drawTabBarItemBackgroundImageWithSize:indicatorImageSize];
//
-(UIImage *)drawTabBarItemBackgroundImageWithSize:(CGSize)size
{
    //准备绘图环境
    UIGraphicsBeginImageContext(size);
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGContextSetRGBFillColor(ctx, 124.0/255, 124.0/255, 151.0/255, 1.0);
    CGContextFillRect(ctx, CGRectMake(0, 0, size.width, size.height));
    //
    //获取该绘图中的图片
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
    //结束绘图
    UIGraphicsEndImageContext();
    return img;   
}

在使用时必须加上这一句图片才能正常显示!!!

    for (UITabBarItem *item in self.tabBar.items) {
        item.selectedImage = [item.selectedImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
        //
        item.image = [item.image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];   
    }
以上是对 UITabBar-UITabBarController-UITabBarItem 控件的描述和使用,不以偏概全,只授之以渔,有更好的操作也会及时更新。如果您有 UITabBar-UITabBarController-UITabBarItem 控件的更好使用欢迎留言交流!

相关文章

网友评论

    本文标题:iOS控件--UITabBar标签条/UITabBarContr

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