今天在学swift的时候发现的这个方法(表脸啊,明明是一起学swift的小伙伴先发现的啊),只需要一句代码(看看下面的这些代码,真是又忧伤又喜悦)

UIImage *image = [[UIImage imageNamed:@"lt_ic_my"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
[btn setImage:image forState:UIControlStateNormal] ;

关键在 imageWithRenderingMode这个方法,看Apple注释

// Create a version of this image with the specified rendering mode. By default, images have a rendering mode of UIImageRenderingModeAutomatic.
- (UIImage *)imageWithRenderingMode:(UIImageRenderingMode)renderingMode NS_AVAILABLE_IOS(7_0);

大意是用指定的渲染模式创建image对象。默认情况下,图像的渲染模式uiimagerenderingmodeautomatic,我们需要的是UIImageRenderingModeAlwaysOriginal

讲真,我会一辈子记住这句代码...

====================================================================================================================================

今天做项目时碰到的需求:

导航条的leftBarButtonItem需要做一个未读提醒,效果如图所示:

贴心的UI妹子也给切图了,有未读一套图,读完另外一套。

熟悉导航条的都知道,导航条有个tintColor属性,当你不设置时恒为蓝色,而设置了就恒为你设置的颜色(例:白色),然后搞了半天,我就有些崩溃,以我的水平真的是没找到利用导航条属性来倔强的用UI妹子图的方法。

在下输了,于是发挥了中国人迂回解决问题的方法,舍弃UI妹子,单独创建一个Button来显示未读小红点,代码如下:

- (UIView *)myView {if (!_myView) {_myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 36, 36)];UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];[btn setAdjustsImageWhenHighlighted:NO];[btn addTarget:self action:@selector(enterPersonInfoPage) forControlEvents:UIControlEventTouchUpInside];[_myView addSubview:btn];[btn mas_makeConstraints:^(MASConstraintMaker *make) {make.edges.equalTo(_myView).insets(UIEdgeInsetsMake(0, 0, 0, 0));}];[btn setImage:[UIImage imageNamed:@"lt_ic_my"] forState:UIControlStateNormal];UIButton *unreadBtn = [UIButton buttonWithType:UIButtonTypeCustom];self.unreadBtn = unreadBtn;[_myView addSubview:unreadBtn];[unreadBtn mas_makeConstraints:^(MASConstraintMaker *make) {make.top.equalTo(_myView).offset(3);make.right.equalTo(_myView).insets(UIEdgeInsetsZero);make.height.equalTo(8);make.width.equalTo(8);}];}return _myView;
}

设置导航条时直接:

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:self.myView];

当有未读消息时:

[self.unreadBtn setImage:[UIImage imageNamed:@"unread"] forState:UIControlStateNormal];

没有时:

[self.unreadBtn setImage:nil forState:UIControlStateNormal];

今天又找到一个方法:

在放图片的button下方放一个透明的button,代码如下:

- (UIView *)myView {if (!_myView) {_myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 36, 36)];UIButton *clearBtn = [UIButton buttonWithType:UIButtonTypeCustom];[clearBtn setAdjustsImageWhenHighlighted:NO];[_myView addSubview:clearBtn];[clearBtn mas_makeConstraints:^(MASConstraintMaker *make) {make.edges.equalTo(_myView).insets(UIEdgeInsetsMake(0, 0, 0, 0));}];UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];[btn setAdjustsImageWhenHighlighted:NO];[btn addTarget:self action:@selector(enterPersonInfoPage) forControlEvents:UIControlEventTouchUpInside];[_myView addSubview:btn];[btn mas_makeConstraints:^(MASConstraintMaker *make) {make.edges.equalTo(_myView).insets(UIEdgeInsetsMake(0, 0, 0, 0));}];[btn setImage:[UIImage imageNamed:@"lt_ic_my"] forState:UIControlStateNormal];self.myBtn = btn;}return _myView;
}

当有未读消息时:

[self.myBtn setImage:[UIImage imageNamed:@"lt_ic_my_unread"] forState:UIControlStateNormal];

没有时:

[UIImage imageNamed:@"lt_ic_my"] forState:UIControlStateNormal];

原因是导航条与放置图片的button中间隔了一层button,导航条tintColor渲染不到了,大概吧,原因找到了再贴。

至此,小马述一家之言。

导航条UIBarButtonItem添加图片,如何避免渲染相关推荐

  1. iOS源码学习-导航条加阴影,自定义导航条的背景图片

    介绍: 给导航条的下方加上阴影,自定义导航条的背景图片. 适用环境:Xcode 4.3, iOS 5.0. 下载地址:github.com 更多源码,请访问开源苹果 运行截图:

  2. UIBarButtonItem导航条按钮封装

    系统导航条应该再iOS开发项目中都会有用到.但是有时间长篇大论的在C里边写一大串代码,未必会有些繁杂.基于封装角度,今天我们来做一个导航条UIBarButtonItem的进一步封装,让代码更简洁 今天 ...

  3. Bootstrap入门(十三)组件7:导航条

    Bootstrap入门(十三)组件7:导航条 1.默认样式的导航条 2.嵌入表单和按钮 3.嵌入文本和非导航的链接 4.组件排列和下拉菜单 5.固定在顶部/底部 6.反色的导航条 7.路径导航 首先先 ...

  4. Bootstrap导航条所支持的组件

    支持的组件 Bootstrap3的导航条中,可以包含站点名称.导航链接.表单.下拉菜单.文本.非导航链接等组件,可以根据需要选择使用. 1.站点名称 站点名称通过 .navbar-brand 的链接元 ...

  5. 【Silverlight】Bing Maps学习系列(九):自定义功能导航条(Custom NavigationBar)

    微软Bing Maps Silverlight Control实现了最基本的地图呈现功能,其功能其他是非常的强大,可以支持很多的扩展功能开发,本文通过自定义功能导航菜单为例介绍基于Bing Maps ...

  6. 3.5Bootstrap组件篇之导航条

    1.默认的导航条 导航条是在您的应用或网站中作为导航标头的响应式元组件.它们在移动设备上可以折叠(并且可开可关),且在可用的视口宽度增加时变为水平展开模式 定制折叠模式与水平模式的阈值 根据你所放在导 ...

  7. Bootstrap 学习之(十)------ 导航与导航条

    导航 Bootstrap 中的导航组件都依赖同一个 .nav 类,状态类也是共用的.改变修饰类可以改变样式. 标签页 注意 .nav-tabs 类依赖 .nav 基类. <span style= ...

  8. UIButton设置图片 在导航条上的 不显示

    2019独角兽企业重金招聘Python工程师标准>>> 其实也不是不现实,只是显示的颜色和导航条的颜色完全一致,看起来好像没有显示,但其实点击那个区域是有效果的,此时只需设置一下导航 ...

  9. 练习(京东图片,导航左侧,网易列表,3school导航条,京东轮播图/电影卡片)

    图片列表 <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8& ...

  10. 微信小程序导航条配置图片背景

    文章目录 微信小程序导航条配置图片背景 全部页面替换 就首页特殊,其他页面纯色导航条(沿用微信那套) 相关代码 如果你觉得写的不错或者帮到你了,记得给我点个赞哟~ 微信小程序导航条配置图片背景 需要实 ...

最新文章

  1. 清华数为大数据应用低代码开发工具DWF 2021成长回顾
  2. [LUOGU] P2330 [SCOI2005]繁忙的都市
  3. 简单实现Dedecms RSS全站输出
  4. PKU 学生反馈 3
  5. html滚动选择框代码,如何使用最简单纯Css代码美化checkbox复选框、radios单选框和滑动按钮...
  6. FileZilla Pro32位64位官方安装版 v3.50.0
  7. Android调用相册、相机(兼容6.0、7.0、8.0)
  8. Linux IPC(Inter-Process Communication,进程间通信)之管道学习
  9. 计算机网络telnet命令作用,telnet命令使用方法详解
  10. 计算机课ppt免费,第1课 认识计算机ppt课件.ppt
  11. html中评论的星星怎么写,css 评分效果的星星示例
  12. R语言中的Wilcoxon符号秩检验与配对学生t检验
  13. Pytorch-RuntimeError: size mismatch m1: [a x b], m2: [c x d]
  14. [已推荐到体育博客,点击查看更多精彩内容] 篮球上的幽默时刻(多图)
  15. 什么是“沙箱”技术?
  16. 21年 河海大学 计算机科学与技术(838) 学硕 上岸心得
  17. 2021年最新ABAQUS复合材料建模仿真与应用专题培训
  18. java将中文转换为pinyin/繁简互转
  19. 学日语、记单词是有规律的(转载)
  20. 机器学习-Logistic Regression(逻辑回归)原理

热门文章

  1. Tlsr8258开发-b85m_module编译无法通过
  2. 解决学术打不开的方法
  3. 企业办理icp许可证有没必要-icp许可证
  4. 《视觉SLAM十四讲》-第五章第1节-1-“相机与图像”-“相机模型”-“针孔相机模型”-学习笔记总结
  5. 03-什么是Mach-O文件?
  6. Linux基础知识学习
  7. Date对象之获取和设置月份getMonthsetMonth
  8. PR图文展示模板 母亲节父亲节活动创意幻灯片视频PR模板
  9. Qt QPushButton水晶按钮样式例子
  10. 阴历日期和阳历日期互相转换(java)