UINavigationController(三)

在使用UINavigtionController的时候,经常会弄不清哪些属性是UINavigationController的,哪些属性是UIViewController的。而且在更改导航栏和工具栏的样式的时候,经常会于遇到api使用下去没有效果的情况。总之,一直用得比较混乱,今天要好好做一个总结,把那些常用的功能都搞清楚。

一、如何往导航栏和工具栏添加按钮

1、navigationItem属性

这个属性是UIViewController在UINavigationControllerItem类目下的。

@property(nonatomic,readonly,retain)UINavigationItem
*navigationItem;

// Created on-demand so that a view controller may customize its navigation appearance.

文档的解释:在必要的时候会创建该属性对象,以便于控制器可以定制它自己的导航栏外观。

UINavigationItem有以下属性:

@property(nonatomic,retain)UIBarButtonItem
*leftBarButtonItem;//导航栏左边的按钮,位置与“返回”按钮相同,两者只显示其一

@property(nonatomic,retain)UIBarButtonItem
*rightBarButtonItem;//导航栏右边的按钮

@property(nonatomic,retain)UIBarButtonItem *backBarButtonItem; //如果前面的那个控制器有title内容,则back
button的内容为<title

@property(nonatomic,retain)UIView *titleView;//自定义title的样式

@property(nonatomic,copy)NSArray
*leftBarButtonItems NS_AVAILABLE_IOS(5_0);//使用该属性,能在导航栏左边显示多个按钮

@property(nonatomic,copy)NSArray
*rightBarButtonItems NS_AVAILABLE_IOS(5_0);//类似leftBarButtonItems属性

@property(nonatomic,copy)NSString *title;//给它赋值的效果相当于给控制器的title属性赋值一样

@property(nonatomic,copy)NSString
*prompt; //文字内容会显示在title的上面,这个属性会使得导航栏的高度增加30

@property(nonatomic) BOOL leftItemsSupplementBackButton NS_AVAILABLE_IOS(5_0);//默认值为NO,在leftbutton和backbutton同时存在的情况下,只显示leftbutton;如果设为YES,将会显示backbutton,且backbutton按钮会显示自己的title而不是控制器的title。

@property(nonatomic,assign)BOOL
hidesBackButton;

2、toolbarItems属性

这个属性是UIViewController在UINavigationControllerContextualToolbarItems类目下的。

@property (nonatomic,retain)NSArray
*toolbarItemsNS_AVAILABLE_IOS(3_0);

功能:在UIViewController中创建一系列UIBarButtonItem对象,将这些对象添加到toolbarItems数组中,这些UIBarButtonItem按钮就会显示在控制器底部的工具栏中。

代码如下:

UIBarButtonItem *refreshItem = [[UIBarButtonItem alloc]initWithCustomView:refreshButton];
    //每个控制器有自己的toolbaritems属性,管理工具栏的数组
[self setToolbarItems:[NSArray arrayWithObjects:refreshItem, nil]];

二、如何定制导航栏和工具栏的样式

1、导航栏的样式:

navigationBar是UINavigationController的属性

(1)导航栏左右两边的按钮

从ios7开始,tintColor属性只能设置导航栏上按钮的字体颜色,无法影响到导航栏的背景色。

(2)导航栏中间的title

从ios5开始,titleTextAttributes属性可以设置title的字体、颜色、大小等。

例如:

[self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor redColor],NSFontAttributeName:[UIFont boldSystemFontOfSize:20]}];

NSForegroundColorAttributeName是关键字,表示文字的颜色

NSFontAttributeName表示字体大小和样式。//这里的两个关键字是ios7开始才有的,ios7之前有另外的对应关键字

(3)导航栏的背景

颜色:从ios7开始,导航栏的背景色由barTintColor来设置,它会把状态栏也变成一样的颜色。

背景图:从ios5开始,

- (void)setBackgroundImage:(UIImage
*)backgroundImage forBarMetrics:(UIBarMetrics)barMetrics用于设置导航栏背景图片

2、工具栏的样式:

未完待续。。。

三、NavigationBar的显示困惑

1、leftbutton和backbutton

2、控制器的title和navigationItem的title、titleView

UINavigationController(三)

时间: 2024-11-05 11:43:18

UINavigationController(三)的相关文章

视图切换

UITabBarController:以平行的方式管理视图,各个视图之间往往关系并不大,每个加入到UITabBarController的视图都会进行初始化即使当前不显示在界面上,相对比较占用内存. UINavigationController:以栈的方式管理视图,各个视图的切换就是压栈和出栈操作,出栈后的视图会立即销毁. UIModalController:以模态窗口的形式管理视图,当前视图关闭前其他视图上的内容无法操作. 一,UITabBarController UITabBarControl

UINavigationController详解三(转)ToolBar

原文出自:http://blog.csdn.net/totogo2010/article/details/7682641,特别感谢. 1.显示Toolbar  在RootViewController.m的- (void)viewDidLoad方法中添加代码,这样Toobar就显示出来了. [cpp] view plaincopy [self.navigationController  setToolbarHidden:NO animated:YES]; 2.在ToolBar上添加UIBarBut

iOS学习之UINavigationController详解与使用(三)ToolBar

1.显示Toolbar  在RootViewController.m的- (void)viewDidLoad方法中添加代码,这样Toobar就显示出来了. [cpp] view plaincopyprint? [self.navigationController  setToolbarHidden:NO animated:YES]; [self.navigationController setToolbarHidden:NO animated:YES]; 2.在ToolBar上添加UIBarBu

[转]iOS学习之UINavigationController详解与使用(三)ToolBar

转载地址:http://blog.csdn.net/totogo2010/article/details/7682641 iOS学习之UINavigationController详解与使用(二)页面切换和segmentedController 接上篇,我们接着讲Navigation 的Toolbar. 1.显示Toolbar  在RootViewController.m的- (void)viewDidLoad方法中添加代码,这样Toobar就显示出来了. [cpp] view plaincopy

UITabBarController 笔记(三) UITabBarController 配合 UINavigationController 的使用

建个空的iOS工程 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization after applicat

UINavigationController + UIScrollView组合,视图尺寸的设置探秘(三)

还是在苹果的 View Controller Catalog for iOS 文章中找到答案.文中提到了两点: 1.If the navigation bar or toolbar are visible but not translucent, it does not matter if the view controller wants its view to be displayed using a full-screen layout. 如果navigation bar或者toolbar

iOS学习之UINavigationController详解与使用(一)添加UIBarButtonItem

转自:http://blog.csdn.net/totogo2010/article/details/7681879 1.UINavigationController导航控制器如何使用 UINavigationController可以翻译为导航控制器,在iOS里经常用到. 我们看看它的如何使用: 下面的图显示了导航控制器的流程.最左侧是根视图,当用户点击其中的General项时 ,General视图会滑入屏幕:当用户继续点击Auto-Lock项时,Auto-Lock视图将滑入屏幕.相应地,在对象

UINavigationController

1 #import "AppDelegate.h" 2 #import "RootViewController.h" 3 @interface AppDelegate () 4 5 @end 6 7 @implementation AppDelegate 8 9 10 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launc

UINavigationController使用详解

有一阵子没有写随笔,感觉有点儿手生.一个多月以后终于又一次坐下来静下心写随笔,记录自己的学习笔记,也希望能够帮到大家. 废话少说回到正题,UINavigationController是IOS编程中比较常用的一种容器view controller,很多系统的控件(如UIImagePickerViewController)以及很多有名的APP中(如qq,系统相册等)都有 用到.说是使用详解,其实我只会介绍几个自认为比较重要或者容易放错的地方进行讲解,下面让我们挨个探探究竟: 首先上一张图(来自苹果官