一开始自己将tabBar全部自定义,将系统tabbar设置为self.tabBar.hidden=YES
,隐藏系统的tabbar。但是自定义的tabbar在push出新页面的时候,tabbar并不会自动隐藏。之后在新页面viewWillAppear
中设置自动隐藏,但是pop回之前页面(在viewDidAppear
中设置tabbar显示)又出现不能及时出现,会有时间延迟,看上去特别不舒服。而且,边缘返回旧页面的时候不能及时显示tabbar也,所以打算用系统默认的tabbar。记录下系统tabBar样式的简单定义。
简单自定义系统的tabBar
- (void) initTabBarView {
NSArray *titles = @[@"工大威海", @"校园应用", @"校园生活", @"更多功能"];
//tabBarItem选中图片简单颜色变化时,自定义选中后的颜色
[self.tabBar setTintColor:[UIColor redColor]];
int i = 0;
for (UITabBarItem *item in self.tabBar.items) {
//自定义tabBarItem的图片
item.image = [[UIImage imageNamed:
[NSString stringWithFormat:@"home_tab_icon_%d", i + 1]] imageWithRenderingMode:UIImageRenderingModeAutomatic];
//定义选中图片,上面imageWithRederingMode设置为Automatic,只是简单颜色变换,不需要设置,不再赘述
//item.selectedImage = ....
//设置tabBarItem的标题
item.title = titles[i];
i ++;
}
}
这是运行后的样式:
push新页面tabBar自动隐藏,pop回显示tabBar
上面说如果用完全自定义的tabbar,我只能设置到等pop回的页面全部出现之后再让tabBar显示出来,这样十分不友好,我们如果实现手机微信类似这样的效果我们应该如何设置呢?注意红框部分
我们应该在要push出新页面的那个页面设置viewDidAppear
和viewWillDisappear
方法:
- (void) viewDidAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self setHidesBottomBarWhenPushed:YES];
}
- (void) viewWillDisappear:(BOOL)animated {
[self setHidesBottomBarWhenPushed:NO];
[super viewDidDisappear:animated];
}
边缘拖动返回的时候,即可实现如下效果:
完成~ 😏😏😏