美文网首页iOS进阶iOS开发-知识合集iOSer 的自我修养
iOS navigationBar小技巧-隐藏灰线与设置背景图片

iOS navigationBar小技巧-隐藏灰线与设置背景图片

作者: 阳光下慵懒的驴 | 来源:发表于2016-06-02 16:30 被阅读4751次

隐藏灰线

shadowImage
  1. 灰线其实是高度为1的shadowImage,所以可以通过设置它来改变样式。
    先创建一个空的UIImage,让shadowImage变透明:
self.navigationController?.navigationBar.shadowImage = UIImage()
  1. 设置shadowImage还不够,不会起任何作用,还需要设置setBackgroundImage才可生效
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default)

这时,灰线确实消失了,可是nav bar也变透明了,这是因为通过setBackgroundImage把bar的背景图片设置成了空图片

  1. 正好可以使用一张图片来弥补这种缺陷
self.navigationController?.navigationBar.setBackgroundImage(UIImage(named: "1.jpeg"), forBarMetrics: .Default)
添加图片
  1. 那么如果不想要图片,只想要纯色而且没有灰线的nav bar呢?
    第一种:加载纯色的图片。简单,不说了
    第二种:通过UIColor创建UIImage:
    之前用OC封装了一个UIImage的category,通过颜色创建纯色的图片,很方便。利用这个类可以创建纯色的nav bar
    UIImage+UIColor.h
#import <UIKit/UIKit.h>
@interface UIImage(UIColor)
// 通过颜色创建UIImage
+(UIImage*)imageWithColor:(UIColor*) color;
@end

UIImage+UIColor.m

#import "UIImage+UIColor.h"
@implementation UIImage(UIColor)
+(UIImage*)imageWithColor:(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 *theImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return theImage;
}
@end

使用:

self.navigationController?.navigationBar.setBackgroundImage(UIImage(color: UIColor.whiteColor()), forBarMetrics: .Default)
结果
  1. 如果觉得还不够纯,可以设置navgationBar为不透明


    不透明

相关文章

网友评论

  • 梧雨北辰:遇到个奇怪的问题:我在没有使用navigationBar.setBackgroundImage的情况下,也成功隐藏了灰线,这与文档里说的不一样
  • eb2d18a460fb:可以考虑遍历UINavigationBar的子视图,找到宽度屏幕宽度,高度为1的子视图,把它隐藏掉
  • BadRomance丶:当导航条设置了背景图时,如果加上搜索框时,搜索时, 导航条会出现上移 问题
  • 浮动跳跃:你这代码里还有问号。。。
  • 投降又不会赢:请问一下 如果背景图片过大 导致的tabbar或者navBar变大可以解决吗?
  • 有梦想的咸鱼宁:今天还在想这个问题--打瞌睡遇到枕头啦 谢谢作者
    阳光下慵懒的驴:能帮到你我很开心:blush:
  • 兰州一碗面:好文 有用~~~ 谢谢作者!
    阳光下慵懒的驴:能帮到你我很开心:blush:

本文标题:iOS navigationBar小技巧-隐藏灰线与设置背景图片

本文链接:https://www.haomeiwen.com/subject/ujlkdttx.html