UITabBar和UIToolbar

女生的网名这么多〃 提交于 2019-12-06 01:24:47

UITabBar和UIToolbar是不一样的,一定要分清楚!!!

UINavigationController 里UINavigationBar 和 UIToolbar 是一套的.
当UIViewController视图self.view加载到KeyWindow屏幕上时navigationbar 和 toolbar也都被添加到了keywindow上,而默认情况下,toolbar 是隐藏的,是一个很灵活的工具栏,可以在需要时显示出来
UITabbarcontroller里的子视图UITabbar和UIToolbar是不一样的,UITabbar一般当作多个根视图之间的切换工具,用来嵌套视图控制器,灵活度不高.

一般情况下,tabbar就是切换不同的view,toolbar就是view里的快捷按钮差不多

 

UITabBarController的底部有一个tabbar,也就是UITabbar对象,用户控制器之间快速切换。

UINavigationController控制器的底部有一个toolbar(默认是隐藏的,可用通过[self.navigationControllersetToolbarHidden:NO])显示出来,UIToolBar对象,可以在上面添加UIBarButtonItem当做快捷键使用。

这是我们最常见用到UITabbar和UIToolBar的地方,但是其实这两个对象还是很好用的,比如你需要定义工具条,是可以通过创建view,在view上添加按钮,设置按钮的位置,为何不用UIToolBar呢,通过UIToolBar的setItems把UIBarButtonItem添加到UIToolBar里面,他们的位置会自动计算好省去了繁琐的位置计算。

 

说道这里说一下UITabbar和UIToolBar的区别:

UITabbar和UIToolBar在很多地方是可以相互替换使用的,他们的区别是:

UITabbar上的item,选中时是高亮的,未选中则是普通状态,而UIToolBar这时没用高亮的状态。

 

常见的创建toolBar的方法如下:

- (void)setToolBar{

    UIToolbar *toolBar = [[UIToolbar alloc] init];

    NSMutableArray *items = [NSMutableArray array];

    NSArray *itemsettings = @[@{@"imageName":@"compose_toolbar_picture",@"actionName":@"selectPicture"},@{@"imageName":@"compose_mentionbutton_background"},@{@"imageName":@"compose_trendbutton_background"},@{@"imageName":@"compose_emoticonbutton_background",@"actionName":@"selectEmoticonKeyboard"},@{@"imageName":@"compose_add_background"}];

    for (NSDictionary *itemDict in itemsettings) {

        UIButton *btn = [[UIButton alloc] init];

        [btn setBackgroundImage:[UIImage imageNamed:itemDict[@"imageName"]] forState:UIControlStateNormal];

        [btn setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"%@_highlighted",itemDict[@"imageName"]]] forState:UIControlStateHighlighted];

        [btn sizeToFit];

        NSString *actionStr = itemDict[@"actionName"];

        if ([actionStr isEqualToString:@"selectPicture"]) {

            [btn addTarget:self action:@selector(selectPicture) forControlEvents:UIControlEventTouchUpInside];

        }else if([actionStr isEqualToString:@"selectEmoticonKeyboard"]){

            [btn addTarget:self action:@selector(selectEmoticonKeyboard) forControlEvents:UIControlEventTouchUpInside];

        }

        UIBarButtonItem *barItem = [[UIBarButtonItem alloc] initWithCustomView:btn];

        [items addObject:barItem];

        //添加弹簧 等间距

        UIBarButtonItem *spaceItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];

        [items addObject:spaceItem];

    }

    [items removeLastObject];

    toolBar.items = items;

    [self.view addSubview:toolBar];

    [toolBar mas_makeConstraints:^(MASConstraintMaker *make) {

        make.left.right.bottom.equalTo(self.view);

        make.height.mas_equalTo(44);

    }];    

}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!