iOS 大话Navigation
修改系统导航栏的返回按钮
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 透明黑色背景、白色文字