一、对UITabBar背景和icon图标的一些设置

(1)因为直接给UITabBar设置的背景颜色显示的不纯,半透明的感觉,所以,有时候我们可以直接利用纯色的图片作为背景达到想要的效果;

(2)给icon图片改变颜色也是重要的实用方法之一,默认的时蓝色。

在AppDelegate.m文件中:(1个导航控制器和5个视图控制器)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  //创建5个视图控制器和1个导航控制器
  ViewController1 *vc1=[[ViewController1 alloc]init];
  UINavigationController *nav1=[[UINavigationController alloc]initWithRootViewController:vc1];
  ViewController2 *vc2=[[ViewController2 alloc]init];
 ViewController3 *vc3=[[ViewController3 alloc]init];  ViewController4 *vc4=[[ViewController4 alloc]init];  ViewController5 *vc5=[[ViewController5 alloc]init];  ViewController *vc6=[[ViewController alloc]init];  //6个标题  nav1.title=@"界面1";  vc2.title=@"界面2";  vc3.title=@"界面3";  vc4.title=@"界面4";  vc5.title=@"界面5";  vc6.title=@"界面6";  //6个系统icon图标  [nav1.tabBarItem initWithTabBarSystemItem:UITabBarSystemItemTopRated tag:1];  [vc2.tabBarItem initWithTabBarSystemItem:UITabBarSystemItemSearch tag:2];  [vc3.tabBarItem initWithTabBarSystemItem:UITabBarSystemItemContacts tag:3];  [vc4.tabBarItem initWithTabBarSystemItem:UITabBarSystemItemMostViewed tag:4];  [vc5.tabBarItem initWithTabBarSystemItem:UITabBarSystemItemMostRecent tag:5];  [vc6.tabBarItem initWithTabBarSystemItem:UITabBarSystemItemDownloads tag:6];  //创建一个视图控制器数组,并把它赋值给标签栏控制器的viewControllers值  NSArray *arr1=[[NSArray alloc]initWithObjects:nav1,vc2,vc3,vc4,vc5,vc6, nil];  UITabBarController *tbCon1=[[UITabBarController alloc]init];  tbCon1.viewControllers=arr1;   //标签栏控制器有个tabBar属性,这个属性有两个items和selectedItem属性是不能用的,因为这两个属性是归标签栏控制器直接管理,其他人不能对其赋值  //运行以下两行代码,程序会崩溃  //tbCon1.tabBar.items=[[NSArray alloc]initWithObjects:vc1.tabBarItem, nil];  //tbCon1.tabBar.selectedItem=vc1.tabBarItem;   //通过backgroundColor可以设置标签栏颜色,但是是一层淡淡的红色  tbCon1.tabBar.backgroundColor=[UIColor redColor];   //可以通过设置背景图片的方式给标签栏设置背景颜色,比如红色的背景图片,要求图片大小要正好  //用以下方式获得标签栏宽高后,创建一个背景图片,再引入进来  NSLog(@"%i,%i",(int)tbCon1.tabBar.frame.size.height,(int)tbCon1.tabBar.frame.size.width);  tbCon1.tabBar.backgroundImage=[UIImage imageNamed:@"tabBarbg.png"];   //通过tintColor可以给icon图标设置颜色  tbCon1.tabBar.tintColor=[UIColor redColor];   //设置被选中标签的背景图片,宽度是375/5=77  tbCon1.tabBar.selectionIndicatorImage=[UIImage imageNamed:@"selectionDic.png"];   //把这个标签栏控制器当做window的根视图控制器来显示  self.window.rootViewController=tbCon1;   // Override point for customization after application launch.  return YES; }

二、隐藏UITabBar的第一种方式

这一种方式需要用导航控制器视图来做实验,因为我们需要用hidesBottomBarWhenPushed属性,这个属性的意思是,当这个视图被压到栈中时(导航控制器的栈),隐藏底部的bar,包括UITabBar。

所以我们以上面的nav1做实验,nav1的根视图控制器是vc1,我们在vc1中增加一个按钮,一点击就到ViewController7.m中(实例是vc7),并隐藏UITabBar。

在vc1中:

#import "ViewController1.h"
#import "ViewController7.h"@interface ViewController1 ()@end @implementation ViewController1 - (void)viewDidLoad {  //  UIButton *btn1=[UIButton buttonWithType:UIButtonTypeRoundedRect];  btn1.frame=CGRectMake(38, 80, 300, 30);  btn1.backgroundColor=[UIColor whiteColor];  [btn1 setTitle:@"PUSH" forState:UIControlStateNormal];  [btn1 addTarget:self action:@selector(jumpTo) forControlEvents:UIControlEventTouchUpInside];  [self.view addSubview:btn1];    [super viewDidLoad];  // Do any additional setup after loading the view. } -(void)jumpTo{  ViewController7 *vc7=[[ViewController7 alloc]init];  [self.navigationController pushViewController:vc7 animated:NO]; } @end

在ViewController7.m中:

#import "ViewController7.h"@interface ViewController7 ()@end@implementation ViewController7 //增加一个initWithNibName方法,标配是return self。此外还需要在初始化时就设置它的hidesBottomBarWhenPushed属性为YES才能生效 //即,在视图控制器的实例被加载到栈之前,就需要设置这个属性,否则无效 -(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{ self.hidesBottomBarWhenPushed=YES; return self; } @end

三、隐藏UITabBar的第二种方式

就是把UITabBar的位置移动,即调整frame.origin.y的值。消失就是把它移出屏幕,出现就是把它再放回原地。(但,还原时又卡顿现象,体验很差,不建议)

所以,在ViewController7.m中:

//增加一个试图即将出现时的方法,并在此设置把tabBar下移,移除整个屏幕,相当于消失了
-(void)viewDidAppear:(BOOL)animated{
  NSArray *arr1=self.tabBarController.view.subviews;
  UIView *view1=[arr1 objectAtIndex:0];
 UITabBar *tabBarView1=[arr1 objectAtIndex:1];  //第一个视图就是全屏,不需要把高度撑满,所以可以不做任何设置  //view1.frame=CGRectMake(0, 0, 375, 667);  tabBarView1.frame=CGRectMake(0, 667, 375, 49); }

在ViewController1.m中:

//增加一个viewDidAppear,把下移的tabBar再上移,相当于还原到原地
-(void)viewDidAppear:(BOOL)animated{NSArray *arr2=self.tabBarController.view.subviews;UITabBar *tabBarView2=[arr2 objectAtIndex:1];tabBarView2.frame=CGRectMake(0, 618, 375, 49); }

截个图:

UITabBar背景、icon图标颜色、被选中背景设置以及隐藏UITabBar的两种方式相关推荐

  1. IntelliJ IDEA(社区版) 背景图片、颜色、字体等设置

    IntelliJ IDEA(社区版) 背景图片.颜色.字体等设置 1.背景图片设置 2.背景颜色设置 3.字体设置 1.背景图片设置 共有两种方式: ①打开IntelliJ IDEA(社区版),然后依 ...

  2. 设置背景图片的两种方式,并解决手机端背景图片高度自适应问题

    设置背景图片的两种方式,并解决手机端背景图片高度自适应问题 参考文章: (1)设置背景图片的两种方式,并解决手机端背景图片高度自适应问题 (2)https://www.cnblogs.com/Dark ...

  3. ImGui添加背景图片的两种方式

    给ImGui添加背景图片的两种方式 最近在使用ImGui做客户端程序,想给窗口添加背景图片,但是作者的文档里面好像并没有讲如何添加背景图片,研究了下找到了两种方式. 第一种 创建一个和窗口一样大的Im ...

  4. 获取checkbox选中状态的两种方式_张童瑶的博客

    获取checkbox选中状态的两种方式 获取checkbox选中状态的两种方式 第一种方式 第二种方式 我的其他文章 我的其他网站 获取checkbox选中状态的两种方式 我在开发项目的时候遇到这个问 ...

  5. 两种方式实现css取消页面鼠标双击选中文字或单击拖动选中文字的效果

    问题描述 我们知道浏览器页面上的文字正常情况下我们是可以双击选中.或者单击鼠标横向拖动也能选中的,选中以后可以右击出现面板然后去复制什么的.但是有的时候,这种效果我们并不想要的,比如用户点快了的时候, ...

  6. el-select添加icon阿里巴巴图标以及动态添加到value值 、icon图标颜色更改

    html部分 <el-select v-model="value" placeholder="2*2" @change="changeSize& ...

  7. Android控制状态栏颜色的两种方式

    Android 中设置them为Theme.AppCompat.Light.NoActionBar时状态栏是灰底白字的.但是如果我们需要白底黑字,该怎么办呢? 方法一. 最简单的办法是在Android ...

  8. Java在控制台输出带颜色字符的两种方式

    通过\033特殊转义符实现 这种方法主要适用于Linux系统的控制台,也能在Windows系统中的IDEA中实现,但在Windows系统的控制台中却是乱码. public class ColourTe ...

  9. echarts 饼图的一种---南丁格尔玫瑰图按照百分比大小进行排序以及颜色设置的两种方式(普通设置颜色和渐变色设置)

    本篇博文是记录一下我在开发过程中遇到的一个问题,那就是对于南丁格尔玫瑰图(或者饼图)如何根据百分比大小进行排列,可以很直观的看出数据高低. 首先给大家展示一下官方的样式,具体代码可以去官网上查看:ht ...

最新文章

  1. 2021-06-06
  2. Floyd算法实验报告
  3. 需求管理(3)------方法论
  4. fullfile函数作用
  5. Get SQL String From Query Object In Entity Framework
  6. Linux Shell脚本编程 --split命令
  7. android 画布裁剪,一种基于Android系统对UI控件进行轮廓剪裁及美化的方法与流程...
  8. python autohotkey_PyAutoGUI-python版的autoit/AHK
  9. python glob模块的应用
  10. Java-Lambda表达式第二篇认识Lambda表达式
  11. 微信养鸡领鸡蛋小程序源码
  12. 判断素数的程序代码c语言,C语言中判断素数的程序代码是什么?
  13. python数据分析课后习题
  14. ev3pid巡线_据说这是最简单的乐高EV3巡线方法
  15. 360文件管理器android,360文件管理器
  16. Charles青花瓷安装使用及断点设置
  17. java 多线程 原子_Java多线程:原子量
  18. Edge使用Flash
  19. 银行家算法01--安全性检查 (操作系统)
  20. SAN光纤交换机常用命令整理(转)

热门文章

  1. python四十七:在子类中调用父类方法
  2. laravel中及其常用的一些函数方法(自己看)和技巧(不断添加中)
  3. Xcode Git 使用
  4. 不仅仅是商务旗舰,金立M2017的拍照实力同样给力
  5. Ubuntu14.04安装redis和简单配置
  6. Java PriorityQueue PriorityBlockingQueue
  7. EXCEL数字前补零且转换成文本型
  8. 开机报警disk boot sector is to be modified
  9. Java 寻找幸运数
  10. python标准模块--os