iOS组件之UINavigaionBar详解

引言

在UINavigationBar的类提供了用于导航的分层内容的控制,UINavigaionBar继承于UIView(有关UIView请参照《iOS组件之UIView详解》。这是一间酒吧,通常显示在屏幕的顶部,包含按钮画面的层次结构中导航。主要属性是一个左(后)按钮,一个中心的标题,和一个可选的右按钮。可以使用一个导航栏作为一个独立的对象,或与导航控制器对象来使用。

目录

1、UINavigaionBar
2、UINavigationItem
3、iOS5新增

1、UINavigaionBar

// 设置bar的样式

UIBarStyle barStyle;

// 设置代理

id delegate;

// 设置是否透明(在iOS6中默认为NO,如果barStyle为UIBarStyleBlackTranslucent为YES)

BOOL translucent;

// Pushing a navigation item displays the item’s title in the center of the navigation bar. // 方法将新的UINavigationItem 压入栈

- (void)pushNavigationItem:(UINavigationItem *)item animated:(BOOL)animated;

// 方法将顶部的UINavigationItem 推出栈

- (UINavigationItem *)popNavigationItemAnimated:(BOOL)animated; // Returns the item that was popped.

// 获取顶部的item(只读)

UINavigationItem *topItem;

// 获取返回的item

UINavigationItem *backItem;

// 设置items组

NSArray *items;
- (void)setItems:(NSArray *)items animated:(BOOL)animated;

// 设置背景颜色

UIColor *tintColor;

// 设置背影颜色(iOS7.0新增)

UIColor *barTintColor;

iOS5新增

// 根据屏幕状态设置背景图片

- (void)setBackgroundImage:(UIImage *)backgroundImage forBarMetrics:(UIBarMetrics)barMetrics;

如果支持竖屏,那么应该设置UIBarMetricsDefault
[navBar setBackgroundImage:[UIImage imageNamed:@"navBarBg.png"] forBarMetrics:UIBarMetricsDefault];

如果支持横屏,那么应该设置UIBarMetricsLandscapePhone
[navBar setBackgroundImage:[UIImage imageNamed:@"navBarBg.png"] forBarMetrics:UIBarMetricsLandscapePhone];

// 根据屏幕状态获取背景图片

- (UIImage *)backgroundImageForBarMetrics:(UIBarMetrics)barMetrics;

// 对titleText设置字体属性

NSDictionary *titleTextAttributes;

// 根据屏幕状态设置标题的垂直偏移量

- (void)setTitleVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics;

// 根据屏幕状态获得标题的垂直偏移量

- (CGFloat)titleVerticalPositionAdjustmentForBarMetrics:(UIBarMetrics)barMetrics;

iOS6新增

// 设置阴影图片

 UIImage *shadowImage;

iOS7新增

// iOS7下设置背景图片(iOS上默认是64,可以通过这个方法设置成44)。

- (void)setBackgroundImage:(UIImage *)backgroundImage forBarPosition:(UIBarPosition)barPosition barMetrics:(UIBarMetrics)barMetrics;

// 获取图片

- (UIImage *)backgroundImageForBarPosition:(UIBarPosition)barPosition barMetrics:(UIBarMetrics)barMetrics;

// 如果想要用自己的图片替换V型,可以设置图片的backIndicatorImage backIndicatorTransitionMaskImage。

UIImage *backIndicatorImage;
UIImage *backIndicatorTransitionMaskImage;

如下代码所示:
[[UINavigationBar appearance] setBackIndicatorImage:[UIImage imageNamed:@"backBtton.png"]]; 
[[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:[UIImage imageNamed:@"backBtton.png"]];

UINavigationBarDelegate协议(可选) // 是否支持pushItem,如果返回NO就不能。

- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPushItem:(UINavigationItem *)item;

// pushItem时会调用的函数

- (void)navigationBar:(UINavigationBar *)navigationBar didPushItem:(UINavigationItem *)item;

// 是否支持popItem,如果返回NO就不能。

- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item;

// popItem时会调用的函数

- (void)navigationBar:(UINavigationBar *)navigationBar didPopItem:(UINavigationItem *)item;

2、UINavigationItem

// 初始化item的title

- (id)initWithTitle:(NSString *)title;

// 设置item的title

NSString        *title;

// 设置返回barButtonItem

UIBarButtonItem *backBarButtonItem;

// 设置titleView

UIView          *titleView;

// 一个显示在顶部导航栏的单行文本

NSString *prompt;

// 是否隐藏返回按钮

BOOL hidesBackButton;

// 隐藏返回按钮

- (void)setHidesBackButton:(BOOL)hidesBackButton animated:(BOOL)animated;

// 设置左边按钮

UIBarButtonItem *leftBarButtonItem;
- (void)setLeftBarButtonItem:(UIBarButtonItem *)item animated:(BOOL)animated;

// 设置右边按钮

UIBarButtonItem *rightBarButtonItem;
- (void)setRightBarButtonItem:(UIBarButtonItem *)item animated:(BOOL)animated;

3、iOS5新增

NSArray *leftBarButtonItems;
NSArray *rightBarButtonItems;
- (void)setLeftBarButtonItems:(NSArray *)items animated:(BOOL)animated; 
- (void)setRightBarButtonItems:(NSArray *)items animated:(BOOL)animated;

// 当某个UIViewController自定义了LeftBarButtonItem(如:返回首页的Home按钮),同时这个UIViewController存在被其他UIViewController,pushViewController(即:从其他试图控制器,跳转到自定义LeftBarButtonItem的试图控制器),这时如果没有在自定义LeftBarButtonItem设置UINavigationItem的属性leftItemsSupplementBackButton,那么系统会默认为NO,那麽其他控制器跳转到此控制器时,导航栏就只会展示你自定的LeftBarButtonItem,而不会显示后退按钮。但这样很不友好。如果想显示后退按钮,这在自定义LeftBarButtonItem时,设置UINavigationItem的属性leftItemsSupplementBackButton为YES即可。

BOOL leftItemsSupplementBackButton;


你可能感兴趣的:(iOS组件之UINavigaionBar详解)