iOS开发-UINavigationBar和Status Bar实用技巧

简介:

iOS7之后关于UINavigationBar和Status  Bar都发生了一系列的改变,如果不需要兼容iOS7之后的设备,按照网上有些资料去解决问题会踩到一些坑。在iOS 7中,我们可以修改每个View Controller中状态栏的外观,而iOS7之前的状态栏都是白色风格。iOS7之前设置背景颜色还需要搞个背景View覆盖,而iOS7只需要设置一下barTintColor颜色即可。

UINavigationBar设置

1.设置背景颜色:

1
[ self .navigationController.navigationBar setBarTintColor:[UIColor redColor]];

效果如下:

 

2.Translucent设置成透明度,设置成YES会有一种模糊效果:

1
[ self .navigationController.navigationBar setTranslucent: YES ];  

设置为NO的效果:

 

3.设置背景图片,图片样式需要根据情况适用,调用方法为setBackGroundImage:

1
[ self .navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@ "FlyElephant.png" ] forBarMetrics:UIBarMetricsDefault];

4.设置NavigationBar标题大小及颜色,之前设置是通过UITextAttributeFont,UITextAttributeTextColor,UITextAttributeTextShadowColor和UITextAttributeTextShadowOffset设置,现在需要都根据NS开头的属性去设置:

1
2
3
NSDictionary   *textAttributes=@{ NSForegroundColorAttributeName :[UIColor whiteColor], NSFontAttributeName :[UIFont systemFontOfSize:20]};
 
[ self .navigationController.navigationBar setTitleTextAttributes:textAttributes];

5.NavigationBar设置中间的标题或者自定义View:

1
2
[ self .navigationItem setTitle:@ "旅行" ];
[ self .navigationItem setTitleView:[UIImage imageNamed:@ "FlyElephant" ];

6.单个或多个左右Item设置:

单个leftItem设置:

1
2
3
UIBarButtonItem  *leftBarButton=[[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@ "BackIcon" ] style:UIBarButtonItemStylePlain target: self  action: @selector (popBack)];
  [leftBarButton setTintColor:[UIColor colorWithWhite:0 alpha:1]];
  self .navigationItem.leftBarButtonItem=leftBarButton;

效果如下:

 

多个rightItem设置:

1
2
3
4
UIBarButtonItem *firstItem=[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemReply target: self  action: nil ];
UIBarButtonItem *secondItem=[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemTrash target: self  action: nil ];
NSArray  *rightItems=@[firstItem, secondItem];
self .navigationItem.rightBarButtonItems=rightItems;

效果如下:

状态栏(StatusBar)设置

iOS7之前状态栏永远是白色风格,我们没有太多的空间去进行修改,iOS 7之后,我们可以修改每个控制器中状态栏的外观,比如说在白天和夜间模式的切换过程中我们可以修改状态栏的颜色。状态栏上的时间、电池指示器和Wi-Fi信号默认是暗色,如上图所示,不过我们可以通过修改UIBarStyle然后执preferredStatusBarStyle的覆写方法:

1
[ self .navigationController.navigationBar setBarStyle:UIBarStyleBlack];

最终执行的是覆写控制器中preferredStatusBarStyle的方法:(如果上面的代码不写是不会执行到preferredStatusBarStyle方法的)

1
2
3
4
- (UIStatusBarStyle)preferredStatusBarStyle
{
     return  UIStatusBarStyleLightContent;
}

效果如下:

隐藏状态栏只需要覆写一下prefersStatusBarHidden即可:

1
2
3
4
- ( BOOL )prefersStatusBarHidden
{
     return  YES ;
}

效果如下:

如果需要重新刷新一下状态栏,可以通过setNeedsStatusBarAppearanceUpdate控制~

本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4631384.html,如需转载请自行联系原作者

相关文章
|
13天前
|
Java Android开发 Swift
安卓与iOS开发对比:平台选择对项目成功的影响
【10月更文挑战第4天】在移动应用开发的世界中,选择合适的平台是至关重要的。本文将深入探讨安卓和iOS两大主流平台的开发环境、用户基础、市场份额和开发成本等方面的差异,并分析这些差异如何影响项目的最终成果。通过比较这两个平台的优势与挑战,开发者可以更好地决定哪个平台更适合他们的项目需求。
54 1
|
20天前
|
设计模式 安全 Swift
探索iOS开发:打造你的第一个天气应用
【9月更文挑战第36天】在这篇文章中,我们将一起踏上iOS开发的旅程,从零开始构建一个简单的天气应用。文章将通过通俗易懂的语言,引导你理解iOS开发的基本概念,掌握Swift语言的核心语法,并逐步实现一个具有实际功能的天气应用。我们将遵循“学中做,做中学”的原则,让理论知识和实践操作紧密结合,确保学习过程既高效又有趣。无论你是编程新手还是希望拓展技能的开发者,这篇文章都将为你打开一扇通往iOS开发世界的大门。
|
21天前
|
搜索推荐 IDE API
打造个性化天气应用:iOS开发之旅
【9月更文挑战第35天】在这篇文章中,我们将一起踏上iOS开发的旅程,通过创建一个个性化的天气应用来探索Swift编程语言的魅力和iOS平台的强大功能。无论你是编程新手还是希望扩展你的技能集,这个项目都将为你提供实战经验,帮助你理解从构思到实现一个应用的全过程。让我们开始吧,构建你自己的天气应用,探索更多可能!
44 1
|
14天前
|
移动开发 前端开发 Swift
iOS 最好的应用程序开发编程语言竟然是这7种
iOS 最好的应用程序开发编程语言竟然是这7种
49 8
|
12天前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异:从代码到用户体验
【10月更文挑战第5天】在移动应用开发的广阔天地中,安卓和iOS两大平台各占半壁江山。它们在技术架构、开发环境及用户体验上有着根本的不同。本文通过比较这两种平台的开发过程,揭示背后的设计理念和技术选择如何影响最终产品。我们将深入探讨各自平台的代码示例,理解开发者面临的挑战,以及这些差异如何塑造用户的日常体验。
|
16天前
|
安全 Swift iOS开发
探索iOS开发中的Swift语言之美
在数字时代的浪潮中,移动应用已成为日常生活的延伸。本文将深入探讨iOS平台上的Swift编程语言,揭示其背后的设计哲学、语法特性以及如何利用Swift进行高效开发。我们将通过实际代码示例,展示Swift语言的强大功能和优雅简洁的编程风格,引导读者理解并运用Swift解决实际问题。
|
26天前
|
开发框架 移动开发 Android开发
安卓与iOS开发中的跨平台解决方案:Flutter入门
【9月更文挑战第30天】在移动应用开发的广阔舞台上,安卓和iOS两大操作系统各自占据半壁江山。开发者们常常面临着选择:是专注于单一平台深耕细作,还是寻找一种能够横跨两大系统的开发方案?Flutter,作为一种新兴的跨平台UI工具包,正以其现代、响应式的特点赢得开发者的青睐。本文将带你一探究竟,从Flutter的基础概念到实战应用,深入浅出地介绍这一技术的魅力所在。
65 7
|
iOS开发
iOS如何隐藏各种bar
状态条StatusBar 1 [UIApplication sharedApplication].statusBarHidden = YES; 导航条NavigationBar 1 [self.navigationController setNavigationBarHidden:YES]; TabBar 方法1 1 [self.tabBarController.tabBar setHidden:YES]; 这个方法有问题,虽然tabBar被隐藏了,但是那片区域变成了一片空白,无法被其他视图使用。
897 0
|
29天前
|
IDE Android开发 iOS开发
探索Android与iOS开发的差异:平台选择对项目成功的影响
【9月更文挑战第27天】在移动应用开发的世界中,Android和iOS是两个主要的操作系统平台。每个系统都有其独特的开发环境、工具和用户群体。本文将深入探讨这两个平台的关键差异点,并分析这些差异如何影响应用的性能、用户体验和最终的市场表现。通过对比分析,我们将揭示选择正确的开发平台对于确保项目成功的重要作用。
|
1月前
|
开发框架 数据可视化 Java
iOS开发-SwiftUI简介
iOS开发-SwiftUI简介