IOS UITabBar+UINavigation(改变背景/标题文字颜色、状态图片、tabbar选中方形背景、item间距)

从零开始:用ADS 2023手把手教你设计2.4GHz Wi-Fi LNA(基于ATF-54143,附模型文件) 本文详细介绍了如何使用ADS 2023软件设计2.4GHz Wi-Fi频段的低噪声放大器(LNA),基于ATF-54143晶体管。内容涵盖模型导入、直流工作点确定、稳定性优化、噪声匹配等关键步骤,并提供可下载的模型文件包,帮助工程师快速掌握LNA设计技巧。 阅读详情


基本属性

上导航栏高度:44

状态栏高度:20

下导航栏高度:49

下导航栏图片大小:22px * 22px

iOS7新引入的区别

iOS7中系统自带的上下导航栏当没有设置背景图的时候自带半透明+玻璃磨砂效果。这种磨砂效果是很难自己实现的。所以如果想要保留这种效果,就不要自定义上下导航栏。

关于自定义上导航栏的是否是自定义的判断:用手势慢慢切换两个View,如果导航栏的按钮自己渐变消失,那么是系统的上导航;如果整个导航栏随着整个View整体滑动,并且能看到清晰边界,那么是自定义导航栏。

系统导航栏的弊端是:上导航栏左侧的按钮的相应区域会很大,即向右侧和下侧扩展,右侧的扩展可以通过给Button下面嵌套一个不能相应事件的UIVIew来规避;而下侧的区域则无法规避,这是苹果为了使得相应区域更大一点,利于用户点击造成的。这本来无可厚非,但是如果我们的设计中,如果紧贴着上导航栏下面安排了点击区域,那么会严重影响这些点击区域的相应范围,一般的情况下,紧贴上导航栏左侧的按钮会无法点击,这时候只能通过替换系统的上导航栏为自定义上导航栏来实现。

自定义导航栏的弊端是:无法实现半透明玻璃磨砂效果,无法通过简单地属性设置实现UITableView的透过上导航栏的效果。这是由于UITableView在iOS7中新增属性的使用限制造成的。

iOS7引入后,苹果的本意是让大家充分利用上下导航栏的空间。在上下导航栏存在的时候,如果尝试获取其中的UIViewController的view大小,iOS6和iOS7上面会有不同的表现:

iOS6中,给出的区域会去除导航栏;而在iOS7中则会包括导航栏 + 状态栏的区域。

iOS7中对于状态栏和导航栏的半透明效果利用

为了在iOS7中充分利用状态栏、导航栏的半透效果,苹果给UIController新增了几个属性,用于自动设置它的View透过导航栏的方式。

该属性可以设置UIScrollView的显示,当设置为YES的时候,UIScrollView及其子类半透穿过导航栏及状态栏显示内容。
这个属性通过设置UIScrollView的contentInset和scrollIndicatorInsets来实现,但是当UIScrollView拥有兄弟View的时候会失效,这时候,我们可以通过主动设置这2个Inset来达到相同目的。这时候应该注意:上边是64(44 + 20),下边是49。

这个属性用来设置UIViewController的view在哪个方向上做穿透导航栏的实现。可以设置的有上导航和下导航。可以搭配上一个属性使用。

当设置了背景图后,导航栏会变得不再透明,而此属性可以设置这时候UIViewController的view是否仍然做和半透明同样的扩展设置。


UITabBarController简单使用

UITabBarController和UINavigationController类似,UITabBarController也可以轻松地管理多个控制器,轻松完成控制器之间的切换,典型的例子就是QQ、微信等应⽤。

1.使用步骤:

(1)初始化UITabBarController

(2)设置UIWindow的rootViewController为UITabBarController

(3)创建相应的子控制器(viewcontroller)

(4)把子控制器添加到UITabBarController

2.代码示例

新建一个空的文件,在Application的代理中编码

YYAppDelegate.m文件

复制代码代码如下:

//
//  YYAppDelegate.m
//  01-UITabBar控制器基本使用
//
//  Created by 孔医己 on 14-6-7.
//  Copyright (c) 2014年 itcast. All rights reserved.
//

#import "YYAppDelegate.h"

@implementation YYAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    //1.创建Window
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.backgroundColor = [UIColor whiteColor];
    
    //a.初始化一个tabBar控制器
    UITabBarController *tb=[[UITabBarController alloc]init];
    //设置控制器为Window的根控制器
    self.window.rootViewController=tb;
    
    //b.创建子控制器
    UIViewController *c1=[[UIViewController alloc]init];
    c1.view.backgroundColor=[UIColor grayColor];
    c1.view.backgroundColor=[UIColor greenColor];
    c1.tabBarItem.title=@"消息";
    c1.tabBarItem.image=[UIImage imageNamed:@"tab_recent_nor"];
    c1.tabBarItem.badgeValue=@"123";
    
    UIViewController *c2=[[UIViewController alloc]init];
    c2.view.backgroundColor=[UIColor brownColor];
    c2.tabBarItem.title=@"联系人";
    c2.tabBarItem.image=[UIImage imageNamed:@"tab_buddy_nor"];
    
    UIViewController *c3=[[UIViewController alloc]init];
    c3.tabBarItem.title=@"动态";
    c3.tabBarItem.image=[UIImage imageNamed:@"tab_qworld_nor"];
    
    UIViewController *c4=[[UIViewController alloc]init];
    c4.tabBarItem.title=@"设置";
    c4.tabBarItem.image=[UIImage imageNamed:@"tab_me_nor"];
   
    
    //c.添加子控制器到ITabBarController中
    //c.1第一种方式
//    [tb addChildViewController:c1];
//    [tb addChildViewController:c2];
    
    //c.2第二种方式
    tb.viewControllers=@[c1,c2,c3,c4];
    
    
    //2.设置Window为主窗口并显示出来
    [self.window makeKeyAndVisible];
    return YES;
}

@end


实现效果:

201512393907321.png (640×960)



三、重要说明

1.UITabBar

下方的工具条称为UITabBar ,如果UITabBarController有N个子控制器,那么UITabBar内部就会有N 个UITabBarButton作为子控件与之对应。

注意:UITabBarButton在UITabBar中得位置是均分的,UITabBar的高度为49。

在上面的程序中,UITabBarController有4个子控制器,所以UITabBar中有4个UITabBarButton,UITabBar的结构⼤大致如下图所示:

201512393950263.png (524×261)




2.UITabBarButton

UITabBarButton⾥面显⽰什么内容,由对应子控制器的tabBarItem属性来决定

 c1.tabBarItem.title=@"消息";
 c1.tabBarItem.image=[UIImage imageNamed:@"tab_recent_nor"];

201512394012185.png (524×338)


3.有两种方式可以往UITabBarController中添加子控制器

(1)[tb addChildViewController:c1];

(2)tb.viewControllers=@[c1,c2,c3,c4];

注意:展示的顺序和添加的顺序一致,和导航控制器中不同,展现在眼前的是第一个添加的控制器对应的View。



2、UITabBarController、TabBar背景颜色设置、TabBarItem颜色处理

转自:http://www.jianshu.com/p/cf9db8bc057c

所以直接通过[[UITabBar appearance] setBackgroundColor:[UIColor redColor]];(此处写错,应该是[[UITabBar appearance] setBarTintColor:[UIColor redColor]];在demo中是写对的,只是这里写错了)。来改变tabar的颜色是不能得到想要的颜色的。如果想要得到想要的颜色需要再另外添加一句:[UITabBar appearance].translucent = NO;这句表示取消tabBar的透明效果。

第二种方法是你可以在tabBar上添加一个有颜色的View:


这样也可以实现相同的效果

还有第三种方法就是使用背景图片:

[[UITabBar appearance] setBackgroundImage:[UIImage imageNamed:@"tabBarBackgroundImage"]];

[UITabBar appearance].translucent = NO;

但同样需要[UITabBar appearance].translucent = NO;


接下来需要处理的第二个问题就是:tabBarItem

设置tabBarItem

首先很多运用中需要在点击某个item后,需要改变背景色,可以通过tabBar的selectionIndicatorImage属性来实现。

第一种方式就是让美工切出符合的图直接放上去,但这种方式美工需要切多个不同尺寸的图,不方便,如果背景色改变,全部图又要重新切,很麻烦。

第二种方式就是自己画,画好后,如果背景色需要改变只需要修改颜色就可以了,不用切图代码实现:



现在选中颜色已经改变了,如图:


好了,tabBarItem的选中时的背景颜色已经弄好了。解决下一个问题

tabBarItem图标文字颜色修改

应该发现了tabBarItem的图标和文字的默认颜色是灰色,选中颜色是蓝色。这是系统默认给图标、文字修改成了灰色和蓝色。如果要改变选中item的颜色可以直接使用tabBar的tintColor来实现,但是如果图标换成别的颜色了又要重新修改tintColor,很不方便。所以重写一个继承与UITabBarItem的自定义类,在initWithCoder:方法中实现如下代码:



mostColorWithImage:方法是自定义的获取图片主颜色的方法,具体代码:





修改BarItem间距

http://m.blog.youkuaiyun.com/article/details?id=51336425


navigationbar弄成透明的而不是带模糊的效果?

[self.navigationBar setBackgroundImage:[UIImage new]  
                         forBarMetrics:UIBarMetricsDefault];  
self.navigationBar.shadowImage = [UIImage new];  
self.navigationBar.translucent = YES;  


类似天猫和网易新闻的导航控制器的pop效果:ZFNavigationController


 http://www.open-open.com/lib/view/open1450623346597.html

MOSFET关断尖峰电压的机理与抑制 MOSFET在电力电子系统中存在开关尖峰电压/电流问题,主要源于寄生电感、密勒电容及开关瞬态特性。尖峰会引发过压击穿、功率损耗和EMI干扰。抑制措施包括优化驱动电路、添加缓冲网络(RC/RCD)、降低寄生电感(改进PCB布线/封装)、使用快速二极管及远端负载特殊处理(电抗器/滤波器)。系统性的器件选型与电路设计是确保功率电子稳定运行的关键。 阅读详情

相关推荐

从零到一:ArduPilot无人船PID调参实战指南

本文详细介绍了ArduPilot无人船PID调参的实战指南,从基础参数设定到高级调参技术,帮助用户掌握水面环境下的PID控制逻辑。通过案例分析和参数示例,解决无人船在空载、负载变化及不同水域环境中的航行问题,提升无人船的稳定性和精确度。

weixin_29266647的博客 506

swift 修改navigationItem.title的颜色

let dict:NSDictionary = NSDictionary(object: UIColor.orangeColor(),forKey:NSForegroundColorAttributeName) navigationBar.titleTextAttributes = dict as? [String : AnyObject] 用titleTextAttributes 修改navi

GhostClock的专栏 1267

11 CO配置-控制-成本中心会计-定义分割结构(OKES-Define Splitting Structure)

业务背景:定义分割结构 事务码: OKES SPRO路径:SPRO->控制->成本中心会计->实际过账->期末结算->作业分配->划分->定义分割结构 第1步,SPRO路径进入 第2步,选择“新的条目”创建 分割结构 第3步,选择分割结构代码 点击“分割规则”进行下一个界面,点击“新条目”创建 分割结构规则 第4步,点击“为规则选择” 为分割结构规则创建版本并保存 第5步,选择“分配”,点击“新的条目” 输入分割结构分配

4371

iOS中设置导航栏标题的字体颜色和大小

文章来源:http://www.aichengxu.com/view/42504 iOS中设置导航栏标题的字体颜色和大小,有需要的朋友可以参考下。 在平时开发项目的时候,难免会遇到修改导航栏字体大小和颜色的需求,一般使用自定义视图的方法,其实还存在一种方法。 方法一:(自定义视图的方法,一般人也会采用这样的方式) 就是在导航向上添加一个titleView,可以使用一个l

jijiji000111的专栏 3万+

华为路由器静态路由配置实战:从零搭建企业级网络环境(含常见错误排查)

本文以真实企业组网案例为基础,详细解析华为路由器静态路由的实战配置流程。内容涵盖从网络拓扑规划、IP地址分配到具体的`ip route-static`命令配置,并重点讲解了缺省路由、浮动路由等进阶应用。文章还提供了系统化的排错指南,帮助网络工程师规避回程路由缺失、子网掩码错误等常见问题,是掌握企业级网络搭建与维护的实用指南。

weixin_29313817的博客 89

保姆级教程:在Ubuntu 22.04上用Conda搞定nuPlan数据集环境(Python 3.9 + PyTorch)

本文提供了一份详细的Ubuntu 22.04环境下使用Conda配置nuPlan自动驾驶数据集的保姆级教程,涵盖Python 3.9安装、Conda环境管理、PyTorch配置及数据集可视化验证等关键步骤,帮助开发者高效搭建开发环境。

weixin_29061997的博客 254

iOS 设置NavigationItem的Title的字体大小和颜色

UIFont *font = [UIFont fontWithName:@"Arial-ItalicMT" size:21];     NSDictionary *dic = @{NSFontAttributeName:font,  NSForegroundColorAttributeName: [UIColor whiteColor]};     self.naviga

izhangtt的博客 1万+

从仿真到打样:PMOS栅极泄放电路设计全流程复盘与三个踩坑点总结

本文详细复盘了PMOS栅极泄放电路从仿真到打样的全流程设计,重点总结了三个关键踩坑点:三极管BE结过压击穿、静态功耗超标和栅极振荡现象。通过优化缓启动电路、改进保护设计和布局调整,最终实现18ms开通时间、190μs关断时间和8μA静态功耗的工业级性能指标,为类似电源开关设计提供实用参考。

weixin_28693683的博客 370

自定义导航栏的背景、标题、返回按钮文字颜色[转]

改变NavigationBar的背景颜色 去自定义NavigationBar的外观我们需要使用 appearance // 整个bar都是红色的了 UINavigationBar.appearance().barTintColor = UIColor.redColor() //barIem的颜色变成了白色原本默认蓝色 UINavi...

weixin_34183910的博客 238

【Go语言实战】(2) Gin+Vue 电子商城

618来!!不用纠结去哪里剁手了!直接自己安排一个商场不香吗??

面向生活编程 4827

第14.7章 高翔博士最新开源框架Lightning-LM源码解读(七):PoseExtrapolator模块深度剖析,揭秘激光SLAM高频位姿外推核心技术

PoseExtrapolator是Lightning-LM框架中负责高频位姿外推的核心模块,通过融合DR(航位推算)、激光里程计和PGO(位姿图优化)数据实现精准实时定位。模块初始化依赖PGO数据,后续通过DR数据进行高频位姿更新,并利用PGO结果进行误差补偿。关键函数AddDRLocAndExtrapolate处理DR增量位姿,结合速度补偿机制逐步修正误差,保证高频输出的同时提升精度。该模块体现了多传感器融合思想,通过互补性数据(高频DR与低频高精PGO)实现鲁棒定位,代码中使用了SE3位姿表示、互斥锁保

行知SLAM 348

改变navigation title 字体颜色的方法

好久都没有写微博了,前一段时间,公司要更改一些需求,首先就是要把navigation的title字体颜色改变了,然后我就去网上查。不巧,写的都是iOS8以前改变颜色的方法。      最后自己研究明白了,好东西当然要跟大家分享嘛。      其实也很简单就是一句话的事         例如,我想要字体颜色变成白色  [self.navigationController.n

cc6662075的博客 683

【ArcGIS风暴】ArcGIS 10.2导入Excel数据X、Y坐标(经纬度、平面坐标),生成Shapefile点数据图层

用过CASS的人都知道,野外数字测图得到的点数据(平面坐标)可以直接导入到CASS中,进一步绘制地形图。那么,带有坐标的数据能不能在ArcGIS中实现点图层的生成呢?答案是必须的! 本文以气象台站shp数据的生成为例,详细介绍ArcGIS 10.2中导入X、Y坐标(这里指的是经度、纬度),生成Shapefile点数据的流程。 相关阅读:《全站仪、RTK测量坐标数据在CASS和ArcGIS中展点的区别和联系》 目录 1、数据准备 2、添加X、Y数据 3、属性表连接(Join) 4、导出为Sh.

智慧空间实验室 10万+

导航栏颜色及UIBarButtonItem 的设置

导航栏iOS7之后. 默认的返回按钮字体颜色是蓝色的, 显示内如是父VC(上一级界面)的title 如果要做修改, 可以通过下面的办法: 1. 修改字体颜色 (1) 在plist里面, 加上View controller-based status bar appearance, 并且设置为NO(2) 在需要修改的那个界面. 加入如下代码(加在viewDIdLoad即可)

Ashimar_ZHZ的博客 4543

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

IOS7UIToolBar高斯模糊学习

IOS7UIToolBar高斯模糊学习 众所周知,IOS7增加了很多新特性,具体就不详细在这里说,今天给大家分享一下UIToolBar的高斯效果。 通过本人亲身尝试,其实UIToolBar,UINavigationBar,UITabbar在IOS7上都会有高斯效果,当然,有些机型不支持(后面会总结),然后他们的表现都是一模一样的,细微的差别就是各个控件上的边框多了一些圆角,横线,但

hzhenx1989的专栏 2271

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

UITabbar 颜色 color

【代码】UITabbar 颜色 color。

590

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

修改 UITabBar的背景颜色

今天为了适配 iOS13的深夜模式。系统的UITabBar的背景颜色随着深夜模式变成了黑色。因此我想让其保持白色。 网上找了好几种方法: 1 、 [[UITabBar appearance] setBackgroundImage:[UIImage imageNamed:@"tabBarBackgroundImage"]]; [UITabBar appearance].translucen...

华仔的博客 3041

【iOS开发-31】UITabBar背景、icon图标颜色、被选中背景设置以及隐藏UITabBar的两种方式

(1)因为直接给UITabBar设置的背景颜色显示的不纯,半透明的感觉,所以,有时候我们可以直接利用纯色的图片作为背景达到想要的效果; (2)给icon图片改变颜色也是重要的实用方法之一,默认的时蓝色。

小小的客栈 大大的江湖 1万+

Swift修改tabBarItem选中色和tabBar背景色

tabBarItem系统默认为蓝色,这里提供一个方法,能够将颜色修改为自己希望的 1)为自己的Tab Bar Controller添加一个控制器 XXTabBarController,关联起来(我使用的StoryBoard做的页面) 2)设置选中色: 在XXTabBarController中,viewDidLoad() 方法下写上 self.tabBar.translucent = fal

Lamissr的博客 1万+

零基础微信小程序开发——全局配置之tabBar

tabBar是微信小程序中的全局配置之一,定义了底部的导航栏,通过tabBar,开发者可以设定多个页面的入口,用户点击时会切换到相应的页面。tabBar导航图标:每个Tab的图标。标题:每个Tab的标题。选中时的颜色:当某个Tab被选中时,它的文字和图标的颜色。未选中时的颜色:当某个Tab未被选中时,它的文字和图标的颜色。通过本文的介绍,你已经了解了如何在微信小程序中配置tabBar,并且学会了如何使用tabBar来实现底部导航栏的功能。你可以根据自己的需求调整tabBar。

小蜗牛的珍贵百宝箱 3701

iOS 设置UITabBar,背景颜色,默认图片,文字颜色,和选中颜色.

对于UITabBar设置背景颜色很简单,backbackgroundColor不要使用,即使设置了也不起作用,应该使用barTintColor设置背景.    那么图标和文字的默认颜色怎么设置呢,也很简单.但是也是有技巧的.他们都是单独设置的,首先是图片,图片默认颜色就应该把图片调成默认颜色,然后,用下面一段代码: let moreImge = UIImage(named: "more"

海阔天空的专栏 4253

iOS之基本控件和tabBar右上角角标显示与隐藏

最近APP大幅度改版更新页面,角标显示的地方比较多,原有的角标显示逻辑混乱,所以参考了以为大神的处理办法对角标进行了如下整理: 右上角角标使用说明 1.首先引入#import "UIView+redPoint.h" 2.使用类型  A.某种控件使用,比如UIImageView、UILabel等等 若此时UIImag

王者归来之英雄有梦 4698

android TabLayout 选中改变背景

第一步:在drawable下创建: tabitem.XML 中:selector 设置 item:选中和不选中的颜色 注意:item中的颜色必须在Values文件下color.xml中定义 然后在引用 。!!!切不可在此处直接写颜色编码 会导致R文件丢失 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:androi...

72的博客 8689

Android 设置 TabLayout 切换时背景色

设置 TabLayout 选中和未选中时的背景色

LHBTM的博客 2004

iOS 怎么修改UITabBarItem角标badge颜色

废话不多说,直接上代码! 为了不影响系统自带功能,所以添加一个UITabBarItem的分类: // .h 文件 @interface UITabBarItem (Custom) // 设置角标值时,替换系统的 'setBadgeValue:'方法 - (void)my_setBadgeValue:(NSString *)badgeValue; @end 复制代码// .m 文件 @implem...

weixin_34261415的博客 662

iOS 设置badgeValue 的小技巧

pragma mark -- 角标提示 如果大于 0 显示,否则隐藏 我们项目中会使用到 badgeValue 用于提醒个数,会遇到变为 0 后,badgeValue 隐藏的问题,可以加一个判断实现。 totleUnreadCounts 为消息个数 if (totleUnreadCounts > 0) { self.navigationController.ta

H.A.N的博客 3264
上一篇: ios ZXing 二维码、条形码扫描
下一篇: C语言C库(十六)
Gz_Jason_chen
博客等级 码龄11年 49粉丝 141原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值