IOS导航栏颜色渐变与常用属性

时间:2022-09-17 20:15:54

(转:http://www.cnblogs.com/Lingchen-start/archive/2015/10/23/4904361.html)

今年很忙,忙的写日志的时间都很少。  少的可怜。

自己一直想实现导航栏的几个功能,

  1、去掉导航栏中的下划线

2、导航栏透明度,背景色随着Scroll 滚动而改变

又是偶然间的发现以下博客;满足了自己的想法

    • 1、导航栏背景色设置:

      self.navigationController.navigationBar.barTintColor = [UIColor greenColor];

    • 2、导航栏标题颜色字体大小

      NSMutableDictionary *attrs = [NSMutableDictionary dictionary];

      attrs[NSForegroundColorAttributeName] = [UIColor whiteColor];

      attrs[NSFontAttributeName] = [UIFont systemFontOfSize:17];

      [self.navigationController.navigationBar setTitleTextAttributes:attrs];

    • 3、导航栏左右item

      UIBarButtonItem *leftItem = [[UIBarButtonItem alloc] initWithTitle:@"left" style:UIBarButtonItemStylePlain target:self action:@selector(left)];

      self.navigationItem.leftBarButtonItem = leftItem;

      UIBarButtonItem *rightItem = [[UIBarButtonItem alloc] initWithTitle:@"right" style:UIBarButtonItemStylePlain target:self action:@selector(right)];

      self.navigationItem.rightBarButtonItem = rightItem;

    • 4、导航栏item字体颜色

      self.navigationController.navigationBar.tintColor = [UIColor redColor];如果要不同item不同颜色,那么item要带一个自定义按钮,在设置按钮属性

    • 5、当前控制器的下一个控制器的返回item去掉文字只保留箭头

      UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:self action:@selector(back)];

      self.navigationItem.backBarButtonItem = backItem;

    • 6、导航栏透明与导航栏底部分割线,如果有图片高为64的话,直接设置图片就可以了,除此之外还可以用代码,这边的例子全部用代码背景色转图片来设置,先设置整个view的背景色为

      self.view.backgroundColor = [UIColor greenColor];如果透明看到的就是绿色。然后在分别设置

      [self.navigationController.navigationBar setBackgroundImage:[self imageWithBgColor:[UIColor colorWithRed:1 green:1 blue:1 alpha:0]] forBarMetrics:UIBarMetricsDefault];

      [self.navigationController.navigationBar setShadowImage:[self imageWithBgColor:[UIColor colorWithRed:1 green:1 blue:1 alpha:0]]];这样就是透明的了

    • 7、如果要监听滚动而使导航栏颜色渐变,那么可以在scrollView的代理方法中添加这样的代码

      -(void)scrollViewDidScroll:(UIScrollView *)scrollView

      {

      [self.navigationController.navigationBar setBackgroundImage:[self imageWithBgColor:[UIColor colorWithRed:1 green:0 blue:0 alpha:self.tableView.contentOffset.y / 100]] forBarMetrics:UIBarMetricsDefault];

      }
      这边用的imageWithBgColor方法

      -(UIImage *)imageWithBgColor:(UIColor *)color {

      CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);

      UIGraphicsBeginImageContext(rect.size);

      CGContextRef context = UIGraphicsGetCurrentContext();

      CGContextSetFillColorWithColor(context, [color CGColor]);

      CGContextFillRect(context, rect);

      UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

      UIGraphicsEndImageContext();

      return image;

      }
      最后大致的效果点左边是默认颜色,点右边透明,滚动渐变,就在这记下这些了,希望有可以帮助到的地方~~

IOS导航栏颜色渐变与常用属性的更多相关文章

  1. IOS 导航栏颜色 标题

    修改导航栏颜 #define COLOR_TOMATO    [UIColor colorWithRed:255/255.0f green:99/255.0f blue:71/255.0f alpha ...

  2. iOS 导航栏颜色字体等的自定义

    1.设置导航栏中间文字的文字颜色和文字大小 方法一:系统方法 self.title = @"下载微课";//在有navigationController的控制器中,作用与self. ...

  3. 几句话实现导航栏透明渐变 – iOS

    首先我们来看下效果 一开始当我们什么只设置了一张图片作为它的头部视图的时候,它是这样的 首当其冲的,我们先得把导航栏弄透明 那么我们首先得知道,设置navigationBar的BackgroundCo ...

  4. swift 自定义导航栏颜色

    func setNavigationApperance(){ //自定义导航栏颜色 [self.navigationController?.navigationBar.barTintColor = U ...

  5. 设置全局导航栏颜色,标题大小和UIBarButtonItem字体大小

    设置全局导航栏颜色,标题大小和UIBarButtonItem字体大小 在appdelegate里面设置 swift: UINavigationBar.appearance().barTintColor ...

  6. IOS 导航栏属性设置

    IOS 7 以上系统导航栏: [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]]; // 返回按钮颜色 [UINaviga ...

  7. iOS导航栏背景,标题和返回按钮文字颜色

    在iOS7下,默认导航栏背景,颜色是这样的,接下来我们就进行自定义,如果你仅仅是更改一下背景和颜色,代码会很简单,不需要很复杂的自定义View来替代leftBarItem 更改导航栏的背景和文字Col ...

  8. iOS 更改状态栏、导航栏颜色的几种方法

    ios上状态栏 就是指的最上面的20像素高的部分状态栏分前后两部分,要分清这两个概念,后面会用到: 前景部分:就是指的显示电池.时间等部分:背景部分:就是显示黑色或者图片的背景部分: (一)设置sta ...

  9. iOS导航栏NavigationBar的颜色,按钮和标题以及字体颜色

    首先,层级关系: leftBarButtonItem.rightBarButtonItem.title都是加在UINavigationItem上的,UINavigationItem再加在Navigat ...

随机推荐

  1. PHP对象Object的概念

    类提供了一个基础,可以在此基础上创建实体(即这个类所建模的实体)的特定实例,这些特定实例称为对象(object) 例如,员工管理应用程序可能包括一个EmPloyee 类.然后可以用这个类来创建和维护特 ...

  2. IOS开发官方文档随笔

    马上着手开发IOS应用程序 创建第一个单视图应用 ###main 方法 int main(int argc, char * argv[]) { @autoreleasepool { return UI ...

  3. ES6转ES5:Gulp+Babel

    目标: ES6代码转成ES5 对转换后的ES5进行压缩 以上步骤自动监控执行 步骤: 1.安装插件 在命令行中定位到项目根目录 安装全局 Gulp npm install -g gulp 安装项目中使 ...

  4. MVC4.0 利用HandleErrorAttribute和log4net实现记录异常日志功能

    1.MVC4.0中HandleErrorAttribte已经帮我们处理了异常问题,当我们新建一个非空的MVC项目时候,在FilterConfig中会发现这样的代码 public class Filte ...

  5. leetcode面试准备:Valid Anagram

    leetcode面试准备:Valid Anagram 1 题目 Given two strings s and t, write a function to determine if t is an ...

  6. 怎样使用CMenu类

    CMenu类从CObject类派生而来.为什么要使用CMenu类呢?AppWzard不是把菜单做好了吗?在资源编辑器上修改菜单不是很方便吗?     我是个vc++初学者,自从当斑竹以来,天天看贴子, ...

  7. 兼容IE低版本

    1,IE6PNG透明的bug,只需要把png图另存为无杂边的png-8格式 2,在IE6用overflow:hidden清除浮动,要加上zoom:1 3,IE6下盒子的最小高度为20px 如果要小于2 ...

  8. Linux tar命令之--exclude参数 排除指定的文件或目录

    https://my.oschina.net/u/3285916/blog/1632552 参数: --exclude 打包时排除不需要处理的文件或目录 说明: tar -zcf a.tar.gz 打 ...

  9. 使用docker试用各种软件及docker-ES设置

    试用开源软件的优劣势 由于现在容器化的热度,大部分软件都有docker official镜像,那么使用docker就是试用软件很好的方法: 优势: 1.可以免去安装部署的过程. 2.不会对当前系统环境 ...

  10. [SDOI2011]计算器(BSGS)

    洛古题面 对于操作一,用快速幂算即可 代码如下 int quickpow(int a,int b,int k) { int r=1; while(b) { if(b&1) r=(r*a)%k; ...