iOS: 状态栏、导航栏、标签栏、工具栏

三种项目栏总结:

工具栏:UIToolBar

导航栏:UINavigationBar

标签栏:UITabBar

UIToolBar的按钮单元为:UIBarButtonItem

UINavigationBar的按钮单元为:UINavigationItem

UITabBar的按钮单元为:UITabBarItem

共同属性和方法:

@property(nonatomic,copy)   NSArray   *items;                    //按钮单元数组

- (void)setItems:(NSArray *)items animated:(BOOL)animated;    //将按钮单元全部设置到项目栏上

注意:一个导航栏控制器只对应一个导航栏,例外,它同时有一个工具栏,不过默认状态下,它是隐藏的,如果需要,需要把它打开。一个标签栏控制器仅仅只有一个标签栏。

导航栏,标签栏,工具栏和状态栏

状态栏

虽然您难以控制状态栏的内容,但是您可以定制它的外观,并在一定程度上定制它的行为。具体来说,您可以:设定网络活动指示器是否应该可见。如果您的应用程序正在执行的一项网络操作会持续几秒钟以上,则应该显示网络活动指示器。如果该网络操作将在几秒钟之内完成,则不必显示网络活动指示器,因为它很可能在用户意识到它的存在之前便消失了。(在您的代码中,您可以使用UIApplication的方法networkActivityIndicatorVisible来控制指示器的可见性。)指定状态栏的颜色。您可以选择灰色(默认的颜色),不透明的黑色或半透明的黑色(也就是α值为0.5的黑色)。图6-2显示了这些样式。(请注意,您应该在Info.plist文件中设置一个值来指定状态栏的样式;更多相关的信息请参考iPhone应用程序编程指南。)设置是否应该采用动画方式显示状态栏颜色的改变。(请注意,动画效果会使旧的状态栏一直滑出屏幕,最后消失,同时新的状态栏会滑动到相应的位置上。)

导航栏

导航栏上的按钮周围有一圈带边角的框。在iPhone OS中,这种样式被称为边框样式。导航栏的所有控件都要使用边框样式。事实上,即使您在导航栏上放置一个无格式(没有边框)的控件,它也会自动转换为有边框的样式。虽然您可以为所有在导航栏中显示的文本指定字体,但为了可读性,推荐您使用系统字体。当您使用适当的UIKit编程接口创建导航栏时,其标题将自动采用系统字体来显示。

工具栏

对于工具栏上显示的项,最好对其数目加以限制,这样用户可以轻松地点击到他们所需的项。我们向您推荐的用户界面元素的点击区域为44 x 44像素,因此,为用户提供五个以下的工具栏项是比较合理的。虽然您既可以在工具栏中使用带边框样式的按钮,也可以使用无格式按钮,但是您不要将这两种样式在同一工具栏中混合使用。

标签栏

标签栏绝不应该被当做工具栏使用,区别在于工具栏上的按钮是对当前模式下的元素起作用的.标签栏使用标签显示图标和文本,这些标签的宽度一致,并且都以黑色为背景。当一个标签被选中时,它的背景变亮,标签中的图像也会高亮显示。

注意: 不管设备的方向如何变化,标签栏不会改变它的不透明性和高度。

如果您的应用程序的标签栏包含的标签数目超过五个,iPhone OS会在标签栏上显示四个标签,并添加一个“更多”标签.

隐藏标签栏的方式有两种:

第一种方式:通过设置视图控制器的hidesBottomBarWhenPushed属性(在视图加载成功之前)

第二种方式: 通过重新设置标签栏控制器视图的的两个子视图的frame(视图显示成功之中)

时间: 2024-10-10 00:22:58

iOS: 状态栏、导航栏、标签栏、工具栏的相关文章

iOS 为导航栏自定义按钮图案Button Image 运行出来的颜色与原本颜色不一样 -解决方案

为相机制作闪光灯,在导航栏自定义了"闪光"图案,希望点击时变换图片,但是一直没有改变,原来是因为设置了Global Tint的颜色,所以系统会自动把图片的颜色改为Global Tint的颜色. 解决方案,设置图片时,添加:imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal 源码: - (void) setFlashOn:(BOOL)isOn { if (self.captureDevice.hasFlash) { UIIm

iOS 去掉导航栏的边界黑线&去掉搜索框的边界黑线和其中文本输入框的阴影 - 解决方案

去掉导航栏的边界黑线 in viewDidload: [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault]; self.navigationController.navigationBar.shadowImage = [[UIImage alloc] init]; 去掉搜索框的边界黑线 in viewDidload:

Framework7学习笔记之导航栏与工具栏的布局类型

一:布局类型 导航栏.工具栏 有多种布局类型,他们分别有不同的表现效果,主要有:静态布局.固定布局.穿透布局. 二:静态布局(少用) 静态布局的导航栏.工具栏,是写死在页面文件中的,每个页面都有它自己的导航栏和工具栏. 原文地址:https://www.cnblogs.com/ygj0930/p/8455093.html

adb工具去掉wifi感叹号、隐藏状态栏/导航栏

adb还原恢复: adb shell "settings delete global captive_portal_use_https" ===================================================================================================================== 前提:无需解锁.无需ROOT!!! 1.手机打开"开发者选项/模式",开启"USB调试

单界面的导航栏和工具栏的用法(IOS开发)

1.工具栏: -可以放置UIButtton,一般配合可变空格使用 -iPhone中工具栏位于屏幕底部,按钮不超过5个 -iPad中工具栏位于屏幕顶部,按钮数量不限 -应用当前界面,考虑的是局部 2.导航栏 - 导航栏-导航栏控制器-多个导航栏项目-可以放置UIButton -考虑的使全局,多界面下 -一般使用标准按钮,这样符合苹果设计的规范 -放置在iPhone顶部(需要留出20点距离给状态栏)

iOS 获取导航栏和状态栏的高度

CGRect rect = [[UIApplication sharedApplication] statusBarFrame]; 状态栏的高度: float status height =  rect.size.height; 导航栏的高度: float navigationheight = self.navigationController.navigationBar.frame.size.height;

ios 获取导航栏和状态栏高度,针对iPhoneX

因为iPhoneX的产生,原本的导航栏再也不是44了,那么会出现什么问题呢?在隐藏导航栏的页面,原本的高度要向上调整一个导航栏+状态栏的高度.那么iPhoneX的导航栏高度不是44了,我们需要手动获取, 有导航栏的,代码如下: 1 2 3 4 5 6 //获取状态栏的rect CGRect statusRect = [[UIApplication sharedApplication] statusBarFrame]; //获取导航栏的rect CGRect navRect = self.navi

【转】【iOS】导航栏那些事儿

原文网址:http://www.jianshu.com/p/f797793d683f 参考文章 navigationItem UINavigationItem UINavigationBar UIBarButtonItem UIButton iOS 7 教程:定制iOS 7中的导航栏和状态栏 前言 本文试图阐释清楚导航栏相关的概念和用法,比如UINavigationBar和UINavigationItem的区别和联系,UIBarButtonItem的用法以及在纯代码和storyboard中有什么

iOS开发导航栏控件的作用

一,在iOS开发过程中针对一些导航栏上需要自定义视图的情况,有时候需要用系统自带的处理,有些时候需要自定义一些视图并把视图添加上去,这时候主要是它们的位置有些许差别,下面简单写下demo: 1,用导航栏系统自带的视图处理: 1 //1 中间的图片 2 UIImageView *imageBarView = [[UIImageView alloc] initWithFrame:CGRectMake(kScreenWidth / 2.f - 40.f, 20.f, 80, 30)]; 3 image

IOS 自定义导航栏

我们自己新建一个View,来自定义导航栏,如下代码: #import <UIKit/UIKit.h> @interface CustomNavigation : UIView typedef enum { customEventClickLBtn1 ,//点击了最左边的按钮 customEventClickRBtn1 , //最右边的按钮 customEventClickLBtn2 ,//点击了左边第二个按钮 customEventClickRBtn2 //点击了右边最靠左的按钮 }Custo