navigaitonBar的自定义设置

navigationBar介绍:

navigationbar就是一个导航视图控制器上面的导航栏。

如何设置这个navigationbar?

首先我们来探讨如何来获取navigationbar?

我们可以使用下面两个方法来获取我们当前页面的navigationbar

	self.navigationController.navigationBar
[UINavigationBar appearance]

获得了这个navigationbar之后,我们可以在这个属性上面进行自定义设置:

设置bar背景颜色方法:

[self.navigationBar setBackgroundColor:[UIColor redColor]];

设置bar的颜色:

[self.navigationBar setBarTintColor:[UIColor redColor]];

设置bar背景图片方法:

[self.navigationBar setBackgroundImage:[UIImage imageNamed:@"Ellipse 4"] forBarMetrics:UIBarMetricsDefault];

要设置navigationBar的title的属性的时候,我们可以使用setTitleTextAttributes方法来设置。

    UIColor *color = [UIColor yellowColor];
NSShadow *shadow = [[NSShadow alloc] init];
[shadow setShadowColor:[UIColor blueColor]];
[shadow setShadowOffset:CGSizeMake(1, 1)];
UIFont *font = [UIFont fontWithName:@"HelveticaNeue-CondensedBlack" size:22]; [self.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:color,NSForegroundColorAttributeName, shadow, NSShadowAttributeName, font, NSFontAttributeName , nil]];

在这个方法中,我们首先title的属性用NSDictionary的value和key表示出来。然后在这个方法中提取出这些属性,设置到这个titleText中去。这里我们需要注意一下,就是这个方法是覆盖设置的,就是说我们先设置了一个字体,然后我们在后来又用这个方法来设置阴影,那么这个字体设置就没有效果了的。

下面是我们的属性的名,我们方便我们在编写的时候可以查看,便于属性的设置:

NSForegroundColorAttributeName//设置字体颜色
NSShadowAttributeName//设置阴影
NSFontAttributeName//设置字体

上面方法中的shadow设置的介绍:

    NSShadow *shadow = [[NSShadow alloc] init];
// 设置阴影的颜色
[shadow setShadowColor:[UIColor blueColor]];
// 设置阴影的位置,就是阴影偏移原来位置的坐标
[shadow setShadowOffset:CGSizeMake(1, 1)];

如何设置VavigationBar上的按钮:

下面是在NavigationBar中设置一个按钮的方法,这里需要注意下设置button的方法不能在navigatonController中的rootViewCotroller中有效。

设置代码的方法为:

UIBarButtonItem *buttonItem3 = [[UIBarButtonItem alloc] init];
[buttonItem3 setTitle:@"back1"];
[buttonItem3 setTarget:self];
[buttonItem3 setAction:@selector(backButtonAction)];
self.navigationItem.leftBarButtonItem = buttonItem3;

这个左边的按钮是我们刚刚创建的。

我们也可以用代码创建好几个button:

UIBarButtonItem *buttonItem2 = [[UIBarButtonItem alloc] init];
[buttonItem2 setTitle:@"back"];
[buttonItem2 setTarget:self];
[buttonItem2 setAction:@selector(rightBarButton2)]; UIBarButtonItem *buttonItem1 = [[UIBarButtonItem alloc] init];
[buttonItem1 setTitle:@"left1"];
[buttonItem1 setWidth:10];
[buttonItem1 setImage:[UIImage imageNamed:@"Ellipse 4"]];
[buttonItem1 setTarget:self];
[buttonItem1 setAction:@selector(rightBarButton1)];
self.navigationItem.rightBarButtonItems = @[buttonItem1, buttonItem2];

这个右边的两个button就是我们刚刚创建的。

我们也可以title的位置自定义View,例如下面的代码:

UIButton *buttonItem5 = [[UIButton alloc] initWithFrame:CGRectMake(120, 20, 40, 40)];
[buttonItem5 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[buttonItem5 setTitle:@"test" forState:UIControlStateNormal];
[buttonItem5 addTarget:self action:@selector(titleViewButton) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.titleView = buttonItem5;

看看这个代码的本质,self.navigationItem.titleView其实是系统给我提供的一个UIView的类型的属性,因此我们可以设置一个UIVIew类型(或者其子类)的实例,设置好将其添加到self.navigationItem.titleView的属性里面,因此看来这个属性的自定义的自由度是非常大的。例如刚刚的代码:我们在代码中设置的UIButton的就是一个UIView的子类。因此,我们可以使用这个button来设置这个属性。




navigaitonBar的自定义设置的更多相关文章

  1. C#:实现快捷键自定义设置(转)

    项目开发过程中,需要实现类似有道词典的软件设置中的自定义快捷键功能,如下图所示: 当我们相继按下Ctrl+Alt+M的时候,软件就会自动将快捷键显示在文本框中. 最终的效果如下图所示: private ...

  2. C#:实现快捷键自定义设置

    代码下载 C#实现快捷键自定义设置 需求 项目开发过程中,需要实现类似有道词典的软件设置中的自定义快捷键功能,如下图所示: 当我们相继按下Ctrl+Alt+M的时候,软件就会自动将快捷键显示在文本框中 ...

  3. Netsharp产品标识自定义设置:产品名称、版权、LOGO等

    阅读本文请先阅读Netsharp下载及环境搭建 Netsharp本身是一个业务基础平台,Netsharp本身基础上开发的业务产品对客户才有价值,客户看到的产品应该不是Netsharp而是具体的业务产品 ...

  4. PHP集成环境自定义设置PHP版本,同时运行多个php版本,700个PHP版本随时切换,一键开启常用模块。

    本文采用我自己开发的纯绿色版WAMP环境(我将这个WAMP环境命名为PHPWAMP) (PHPWAMP默认集成VC,不需要单独安装) 那么什么是WAMP环境?WAMP这个词是什么意思? Windows ...

  5. Html中<Hr>标签、样式的使用和自定义设置

    <Hr>标签中样式的使用和自定义设置... -------------------- ====================== 已经测试过了可以用的Hr样式: <!--这是一部分 ...

  6. xpadder教程:自定义设置游戏手柄的图片

    关于xpadder设置按键的教程,网上已经很多,我就不凑这个热闹了.这里介绍的是如何自定义设置手柄的图片,就是按钮的背景图,如下图所示: 步骤: 1)准备一张背景图 注意:格式必须是24位色的BMP位 ...

  7. Android 解决通过自定义设置打开热点后手机搜索不到热点的问题。

    开发过程中出现了通过自定义设置打开热点后手机搜索不到热点的问题. 后来通过观看  /data/misc/wifi  目录下的  hostapd.conf  文件,发现是 interface=ap0 d ...

  8. Asp.Net 自定义设置Http缓存示例(一)

    一.自定义图片输出,启用客户端的图片缓存处理 代码示例: string path = Request.Url.LocalPath; if (path != null) { path = path.To ...

  9. 关闭IE8的首次运行自定义设置

    方法一:顺着IE8的提示,一步一步的了解看完或设置完等的,它“推荐”的你应该做的事,然后重新设置首页就行了. 方法二:开始->运行->输入:gpedit.msc->用户配置-> ...

随机推荐

  1. 在php中使用Memcache

    在上一篇博客中我写到了memcache的安装和管理,在这一篇博客中我将写到的是在php中如何使用memcache. 一.安装memcache扩展 首先我们通过phpinfo()函数查看一下我们当前的p ...

  2. Delphi中停靠技术的实现

    随着软件技术的不断进步,软件界面也越来越美观,操作也越来越方便.综观市面上比较专业的各种软件,我们会发现大部分都提供窗体停靠的功能,特别象工具软件,基本上都或多或少有停靠功能.自然,Delphi也支持 ...

  3. django笔记1

    最近在博客园看来越来越多的关于python的文章,我看到时感觉特别的好,因为我也是一个特别喜欢python这门语言,喜欢python的简洁.干净,简洁而不失强大. 最近在学习django的Model模 ...

  4. nodebb在阿里云主机部署过程

    1.在centos上安装nodejswget http://nodejs.org/dist/v0.8.9/node-v0.8.9.tar.gztar zxvf node-v0.8.9.tar.gzcd ...

  5. 学习 html5 需要学习的 基本 库

    jquery backbone bootstrap  underscore  appframework  require.js

  6. 应用SecureCRT(发送接收文件)

    使用 SecureCRT 和 cz. sz,可以从 Linux 服务器上下载/上传文件. Linux 上要安装 lszrz 包 (1)编译安装root 账号登陆后,依次执行以下命令 cd /tmp w ...

  7. WPF感悟(1)

    原文地址:http://liutiemeng.blog.51cto.com/120361/91632 1.UI层与逻辑层要尽可能地剥离(解耦). 2.Routed Event和Command比Even ...

  8. BZOJ 1016 最小生成树计数

    Description 现在给出了一个简单无向加权图.你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树.(如果两颗最小生成树中至少有一条边不同,则这两个最小生成树就是不同的 ...

  9. Rundeck,RUN起来!!

    零晨一点, 还好,跑起来了.. 满满的英文文档,肿么办?? 拿下!

  10. Spring中用@Component、@Repository、@Service和 @Controller等标注的默认Bean名称会是小写开头的非限定类名

    今天用调度平台去调用bean中的方法时,提示找不到bean.经查,发现是由于如果在标注上没有提供name属性值,则默认的bean名称是小写开头的,而不是大写开头的. 下面是其他文档参阅: 使用过滤器自 ...