使用导航控制器的笔记

来源:互联网 发布:电视连接网络 编辑:程序博客网 时间:2024/05/20 04:11

 

使用导航控制器的笔记

1   设置title

下面这句代码设置之后会让当前控制器的title和下一个控制器的‘返回’处都显示‘标题’字样,

// 设置标题

self.navigationItem.title= @"第一个控制器";

self.title = @"标题";

但上图效果这并不是我想要的,我想要对返回按钮单独设置,于是就这么做:

// 设置标题

self.title = @"标题";

    //创建一个返回按钮

UIBarButtonItem*item = [[UIBarButtonItem alloc] initWithTitle:@"返回"style:UIBarButtonItemStylePlain target:nil action:nil];

    //修改返回按钮的样式

self.navigationItem.backBarButtonItem = item;

恩,不错,这才是我想要的。

2 设置导航栏左右两边:

    //创建一个 UIBarButtonItem

UIBarButtonItem*item1 = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemCameratarget:nil action:nil];

UIBarButtonItem*item2 = [[UIBarButtonItem alloc]initWithTitle:@"HELLO"style:UIBarButtonItemStylePlain target:nil action:nil];   

//设置左右两边的按钮

self.navigationItem.leftBarButtonItem= item1;

self.navigationItem.rightBarButtonItem= item2;

 

如果我要在左右两边添加多个按钮,使用这个属性:

   self.navigationItem.leftBarButtonItems = @[ item1, item2 ];

self.navigationItem.rightBarButtonItems= @[ item1, item2 ];

 

 

// 使用图片创建item,所选图片是高亮的

UIImage* image = [UIImage imageNamed:@"navigationbar_friendsearch_highlighted"];

//对image做处理

image = [imageimageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

UIBarButtonItem* item5 = [[UIBarButtonItem alloc] initWithImage:imagestyle:UIBarButtonItemStylePlain target:nil action:nil];

self.navigationItem.leftBarButtonItem = item5;

如果上面的红色代码注释掉(即对image进行处理),结果如下图:

如果使用上面红色标记的的代码(即对image进行处理),结果如下图:

产生的结果差异在于:苹果自己内部对导航栏默认做了一些渲染处理,所以需要使用这句代码image = [imageimageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];来让图片显示真身,取消默认的渲染效果。

3 自定义标题

有两种方法:

    //1利用titleView属性

UILabel * titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 44)];

titleLabel.font = [UIFontboldSystemFontOfSize:20];

titleLabel.textColor = [UIColorlightGrayColor];

titleLabel.textAlignment =NSTextAlignmentCenter;

titleLabel.text = @"自定义标题";

self.navigationItem.titleView =titleLabel;

//     自定义标题(2)

NSDictionary* attr = @{NSFontAttributeName : [UIFontsystemFontOfSize:10],NSForegroundColorAttributeName : [UIColor redColor] };

[self.navigationController.navigationBarsetTitleTextAttributes:attr];

 

此外,导航栏还有一些其他的属性(关于3个颜色):

    // 1主题的颜色

[self.navigationController.navigationBarsetTintColor:[UIColor orangeColor]];

//2 导航栏 bar的背景颜色

[self.navigationController.navigationBarsetBackgroundColor:[UIColor purpleColor]];

观察下图,显然,苹果又自作聪明的给我们的设置的颜色做了些渲染,看着就像是在紫色上面加了一层模糊的效果,专业术语叫做高斯模糊,也叫毛玻璃,使用下句代码就可以取消渲染。

// 高斯模糊(毛玻璃)设置为NO不透明

self.navigationController.navigationBar.translucent= NO;

 

 

//3 bar的颜色

[self.navigationController.navigationBarsetBarTintColor:[UIColor redColor]];

 

 

 

0 0
原创粉丝点击