专注iOS开发iOS开发之常用技术点

iOS 大话Navigation

2016-07-16  本文已影响238人  瞬csr

修改系统导航栏的返回按钮

iOS开发中,navigation的返回按钮是英文“back”,想修改成中文“返回”或者自定义的文字;这么简单的事情却折腾了小半个小时。原来是被leftBarButtonItem和rightBarButtonItem的设置方法给迷惑了。

我们设置leftBarButtonItem和rightBarButtonItem的时候都是在当前页面;而backBarButtonItem却是在父页面;所以需要在调用

[self.navigationController  pushViewController:photoController  animated:YES];

之前执行;代码如下:

self.navigationItem.backBarButtonItem=[[UIBarButtonItem  alloc]  initWithTitle:@”返回“style:UIBarButtonItemStyleBordered  target:nil  action:nil];

[self.navigationController   pushViewController:photoController  animated:YES];

系统通常会默认上一页面的title为返回,其次如果设置backBarButtonItem,则会默认为backBarButtomItem,优先级最高的便是LeftBarButtomItem和RightBarButtomItem,优先级依次递增。


IOS 去掉导航栏(UINavigationBar)下方的横线

下图是要最终实现的效果:

但是,开始时会出现下图中箭头指向的横线效果:

这是导航栏的问题,将下边的代码放在viewWillAppear  方法中就可以实现效果:

- (void)viewWillAppear:(BOOL)animated{

[superviewWillAppear:animated];

//    self.automaticallyAdjustsScrollViewInsets = NO;

// 透明状态栏的延伸

//    self.edgesForExtendedLayout = UIRectEdgeNone;

[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarPosition:UIBarPositionAny   barMetrics:UIBarMetricsDefault];

self.navigationController.navigationBar.shadowImage = [[UIImage alloc] init];

self.navigationController.navigationBar.translucent = NO;



系统按钮

除了图像与文字按钮,还有一个小型的系统按钮库,可以创建那些在许多应用程序中都可以见到的标准化的预定义按钮。系统按钮也是UIBarButtonItem对象,可以通过类的initWithBarButtonSystemItem方法来创建。如下例:

UIBarButtonItem *myBookmarks = [ [ UIBarButtonItem alloc ] initWithBarButtonSystemItem: UIBarButtonSystemItemBookmarks  target: self action: @selector(mySelector:)];

下是目前支持的系统按钮,可以在UIBarButtonItem.h头文件中找到。

按钮标识符

描    述

UIBarButtonSystemItemDone                     蓝色文字按钮,标有“Done”

UIBarButtonSystemItemCancel                   文字按钮,标有“Cancel”

UIBarButtonSystemItemEdit                        文字按钮,标有“Edit”

UIBarButtonSystemItemSave                       蓝色文字按钮,标有“Save”

UIBarButtonSystemItemAdd                        图像按钮,上面有一个Å符号

UIBarButtonSystemItemFlexibleSpace          空白,占用空间大小可变

UIBarButtonSystemItemFixedSpace             空白占位符

UIBarButtonSystemItemCompose                图像按钮,上有一支笔和纸张

UIBarButtonSystemItemReply                      图像按钮,上有一个回复箭头

UIBarButtonSystemItemAction                     图像按钮,上有一个动作箭头

UIBarButtonSystemItemOrganize                 图像按钮,上有一个文件夹以及向下箭头

UIBarButtonSystemItemBookmarks              图像按钮,上有书签图标

UIBarButtonSystemItemSearch                     图像按钮,上有spotlight图标

UIBarButtonSystemItemRefresh                    图像按钮,上有一个环形的刷新箭头

UIBarButtonSystemItemStop                         图像按钮,上有一个停止记号X

UIBarButtonSystemItemCamera                    图像按钮,上有一个照相机

UIBarButtonSystemItemTrash                       图像按钮,上有一个垃圾桶

UIBarButtonSystemItemPlay                          图像按钮,上有一个播放图标

UIBarButtonSystemItemPause                       图像按钮,上有一个暂停图标

UIBarButtonSystemItemRewind                     图像按钮,上有一个倒带图标

UIBarButtonSystemItemFastForward              图像按钮,上有一个快进图标

自定义视图按钮

与导航栏类似,按钮也可以按照自定义视图类来绘制,这样你就可以将任何一种其他类型的视图对象作为按钮来显示:

UIBarButtonItem *customButton = [ [ UIBarButtonItem alloc ]   initWithCustomView: myView ];

创建工具栏

将所有希望显示出来的按钮都添加到前面创建的buttons数组:

[ buttons addObject: buttonImage ];

[ buttons addObject: buttonText ];

[ buttons addObject: myBookmarks ];

下一步,创建一个UIToolbar对象,并将你的按钮数组赋予工具栏作为项目列表:

UIToolbar *toolbar = [ [ UIToolbar alloc ] init ];

[ toolbar setItems: buttons animated: YES ];

最后,将你的导航栏的标题视图替换为新创建的工具栏,就像替换成分段控件一样:

self.navigationItem.titleView = toolbar;

当导航栏显示出来时,工具栏就会出现在它的中央。

调整大小

工具栏会对加入的按钮套用默认大小。如果你希望调整工具栏,让它可以更干净利落地适应导航栏的大小,可以用sizeToFit方法:

[ toolbar sizeToFit ];

工具栏的风格

就像许多其他基于视图的对象一样,UIToolbar也包含有一个风格属性,名为barStyle。这个属性可以用来调整工具栏的风格,令其与你为导航栏定义的风格相匹配:

toolbar.barStyle = UIBarStyleDefault;

可以将工具栏的风格设置为三种标准风格主题之一,这些主题也为大多数其他类型的栏状对象所使用

iOS基础-系统自带按钮样式- UIBarButtonSystemItem

UIBarStyleDefault                        默认风格;灰色背景、白色文字

UIBarStyleBlackOpaque               纯黑色背景、白色文字

UIBarStyleBlackTranslucent         透明黑色背景、白色文字

上一篇下一篇

猜你喜欢

热点阅读