方法一遍历法:

在你需要隐藏的地方调用如下代码

[self findlineviw:self.navigationBar].hidden = YES;

-(UIImageView*)findlineviw:(UIView*)view{

if ([view isKindOfClass:[UIImageView class]]&&view.bounds.size.height<=1.0) {

return (UIImageView*) view;

}for (UIImageView *subview in view.subviews) {

UIImageView *lineview = [self findlineviw:subview];

if (lineview) {

return lineview;

}

}

return nil;

}

方法二:注意这两句代码一句需要同时配合使用才有效果,可以在不同函数调用,但是必须保证两句代码都会执行到。

self.navigationBar.shadowImage = [UIImage new];

[self.navigationBar setBackgroundImage:[UIImage imageWithColor:kClearColor] forBarMetrics:UIBarMetricsDefault];

二,设置导航栏浙变

方法一:

定制一个view添加到导航栏上:

- (UIView *)navBarView {

if (!_navBarView) {

UIView *navBarView = [[UIView alloc] init];

navBarView.frame = CGRectMake(0, -20, kScreenWidth, 64);

[self.navigationController.navigationBar addSubview:navBarView];

self.navBarView = navBarView;

}

return _navBarView;

}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{

self.navigationItem.title = @"";

CGFloat offsetY = scrollView.contentOffset.y;

if (offsetY > startH) {

CGFloat alpha = MIN(1, 1 - ((startH + 64 - offsetY) / 64));

NSLog(@"%f",alpha);

self.navBarView.backgroundColor = [kBlackColor colorWithAlphaComponent:alpha];

if (offsetY >= (startH + 64)){

//这里设置滚动的时候是否显示标题,不需要可以注释掉

self.navigationItem.title = @"主页";

}

} else {

self.navBarView.backgroundColor = kClearColor;

}

}

方法二:直接改变导航栏的颜色

申明:

/** 滚动到多少高度开始出现 */

static CGFloat const startH = 0;

/** 导航条View */

@property (nonatomic, weak) UIView *navBarView;

实现:

-(void)viewWillAppear:(BOOL)animated

{

[super viewWillAppear:animated];

//设置导航栏的初始颜色

// [self.navigationController.navigationBar setBackgroundImage:[UIImage imageWithColor:[UIColor clearColor]] forBarMetrics:UIBarMetricsDefault];

//建议用这个方法设置初始化颜色,如果不设置barTintColor的颜色,那setBackgroundImage为clearColor时导航栏底色会成默认色

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

}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{

//这里设置滚动的时候是否显示标题,不需要可以注释掉

self.navigationItem.title = @"";

CGFloat offsetY = scrollView.contentOffset.y;

if (offsetY > startH) {

CGFloat alpha = MIN(1, 1 - ((startH + 64 - offsetY) / 64));

NSLog(@"%f",alpha);

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageWithColor:[kBlackColor colorWithAlphaComponent:alpha]] forBarMetrics:UIBarMetricsDefault];

if (offsetY >= (startH + 64)){

//这里设置滚动的时候是否显示标题,不需要可以注释掉

self.navigationItem.title = @"主页";

}

} else {

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageWithColor:kClearColor] forBarMetrics:UIBarMetricsDefault];

}

}

方法三:导航栏浙变

- (void)viewDidLoad {

[super viewDidLoad];

self.view.backgroundColor = [UIColor redColor];

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

}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

{

CGFloat offset = scrollView.contentOffset.y;

if (offset<=0&&offset<=-90) {

self.navigationController.navigationBar.alpha = 0;

}else if(offset<=500){

self.navigationController.navigationBar.alpha = offset/200;

}

}

类扩展的方法:

+ (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 *image = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return image;

}

三、滚动时改变状态栏的颜色:

-(void)viewWillAppear:(BOOL)animated
{ self.navigationController.navigationBarHidden = YES;
UIView *statusBarView=[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 20)];
statusBarView.backgroundColor = kOrangeColor;
[self.view addSubview:statusBarView];
_statusBarView = statusBarView;
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:NO];
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{

CGFloat offsetY = scrollView.contentOffset.y;
if (offsetY > startH) {
CGFloat alpha = MIN(1, (1 - ((startH + 64 - offsetY) / 64))/10.f);
NSLog(@"%f",alpha);
_statusBarView.backgroundColor = [kBlackColor colorWithAlphaComponent:alpha];
// [self.navigationController.navigationBar setBackgroundImage:[UIImage imageWithColor:[kBlackColor colorWithAlphaComponent:alpha]] forBarMetrics:UIBarMetricsDefault];
if (offsetY >= (startH + 64)){
_homePageTableView.backgroundColor = kColorHexValue(0xe6ebeb, 1);
}
} else {
_homePageTableView.backgroundColor = kOrangeColor;
_statusBarView.backgroundColor = kOrangeColor;

// [self.navigationController.navigationBar setBackgroundImage:[UIImage imageWithColor:kClearColor] forBarMetrics:UIBarMetricsDefault];
}
}

ios隐藏导航栏底线条和导航、状态栏浙变色的更多相关文章

  1. IOS 实现自定义的导航栏背景以及自定义颜色的状态栏(支持7.0以及低版本)

    为尊重文章原作者,转载务必注明原文地址:http://www.cnblogs.com/wt616/p/3784717.html 先看效果图: 在自定义导航栏背景时,可能会遇到以下一些问题: 1.当设置 ...

  2. Jquery实现动态导航栏和轮播导航栏

    动态导航栏和轮播导航栏的实现思想: 利用jquery技术的append()方法和bind()方法实现li标签的添加和点击事件绑定,在利用$getJSON(url,data,function)请求方法实 ...

  3. 微信小程序入门四: 导航栏样式、tabBar导航栏

    实例内容 导航栏样式设置 tabBar导航栏 实例一:导航栏样式设置 小程序的导航栏样式在app.json中定义. 这里设置导航,背景黑色,文字白色,文字内容测试小程序 app.json内容: { & ...

  4. iOS WKWebView 加载进度条、导航栏返回&关闭 (Swift 4)

    导航: 1.加载进度条 2.导航栏增加返回.关闭按钮 加载进度条 效果图 代码如下: self.progressView.trackTintColor = UIColor.white self.pro ...

  5. iOS 导航栏 工具条

    导航栏最常见的例子就是返回按钮的所在 在AppDelegate.m中,代码布局最开始定义窗口的时候, _window.rootViewController就应该为一个UINavigationContr ...

  6. iOS侧滑返回到隐藏导航栏的VC,导航栏会闪现一次

    VCA:是一个隐藏导航栏的页面:VCA在ViewWillAppear生命周期函数中设置导航栏隐藏: //隐藏导航栏 [self.navigationController setNavigationBa ...

  7. Android仅2步实现 滚粗 汉堡导航栏效果~ 全新底部导航交互(滑动隐藏)

    本文同步自wing的地方酒馆 布吉岛大家有木有看这一篇文章,再见,汉堡菜单,我们有了新的 Android 交互设计方案 本库下载地址:https://github.com/githubwing/Bye ...

  8. iOS---实现简书和知乎的上滑隐藏导航栏下拉显示导航栏效果

    因为自己用简书和知乎比较多,所以对其导航栏的效果比较好奇,自己私下里找资料实现了一下.这个效果的关键点在于下方可供滑动的内容的便宜距离inset的改变,以及滑动的scrollview代理的执行,废话不 ...

  9. iOS 设置导航栏的颜色和导航栏上文字的颜色

    #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @pr ...

随机推荐

  1. mac os develop

    . 安装PCRE Download latest PCRE. After download go to download directory from terminal. $ cd ~/Downloa ...

  2. UltraISO PE(软碟通) v9.6.2.3059 注册码

    注册码: 王涛7C81-1689-4046-626F

  3. HW1.3

    public class Solution { public static void main(String[] args) { System.out.println(" J A V V A ...

  4. HW4.3

    public class Solution { public static void main(String[] args) { final double POUND_PER_KILOGRAM = 2 ...

  5. POJ2478 - Farey Sequence(法雷级数&&欧拉函数)

    题目大意 直接看原文吧.... The Farey Sequence Fn for any integer n with n >= 2 is the set of irreducible rat ...

  6. Weblogic 集群部署说明 --转

    代理web.xml 设置 <servlet> l                <servlet-name>HttpClusterServlet</servlet-nam ...

  7. 第一章 Windows NT System Components

    Page 3. The focus(焦点) of this book is Windows NT file system and the interaction(交互) of the file sys ...

  8. 第三步 用Jena自定义完成数据库到RDF的映射

    第三步 用Jena自定义完成数据库到RDF的映射 2013年10月17日 8:53:27 这一步用Jena编程,终于能做点有技术含量的事情了.这个工作计划本周内完成,下周一好给老师一个交待. 目标:把 ...

  9. chrome浏览器当表单自动填充时,怎么去除浏览器自动添加的默认样式。

    参考blog来自 http://segmentfault.com/q/1010000000671971 chrome浏览器当表单自动填充时,怎么去除浏览器自动添加的默认样式. 一.发现该问题的原因-是 ...

  10. Kivy A to Z -- 怎样从python代码中直接訪问Android的Service

    在Kivy中,通过pyjnius扩展能够间接调用Java代码,而pyjnius利用的是Java的反射机制.可是在Python对象和Java对象中转来转去总让人感觉到十分别扭.好在android提供了b ...