ios隐藏导航栏底线条和导航、状态栏浙变色
方法一遍历法:
在你需要隐藏的地方调用如下代码
[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隐藏导航栏底线条和导航、状态栏浙变色的更多相关文章
- IOS 实现自定义的导航栏背景以及自定义颜色的状态栏(支持7.0以及低版本)
为尊重文章原作者,转载务必注明原文地址:http://www.cnblogs.com/wt616/p/3784717.html 先看效果图: 在自定义导航栏背景时,可能会遇到以下一些问题: 1.当设置 ...
- Jquery实现动态导航栏和轮播导航栏
动态导航栏和轮播导航栏的实现思想: 利用jquery技术的append()方法和bind()方法实现li标签的添加和点击事件绑定,在利用$getJSON(url,data,function)请求方法实 ...
- 微信小程序入门四: 导航栏样式、tabBar导航栏
实例内容 导航栏样式设置 tabBar导航栏 实例一:导航栏样式设置 小程序的导航栏样式在app.json中定义. 这里设置导航,背景黑色,文字白色,文字内容测试小程序 app.json内容: { & ...
- iOS WKWebView 加载进度条、导航栏返回&关闭 (Swift 4)
导航: 1.加载进度条 2.导航栏增加返回.关闭按钮 加载进度条 效果图 代码如下: self.progressView.trackTintColor = UIColor.white self.pro ...
- iOS 导航栏 工具条
导航栏最常见的例子就是返回按钮的所在 在AppDelegate.m中,代码布局最开始定义窗口的时候, _window.rootViewController就应该为一个UINavigationContr ...
- iOS侧滑返回到隐藏导航栏的VC,导航栏会闪现一次
VCA:是一个隐藏导航栏的页面:VCA在ViewWillAppear生命周期函数中设置导航栏隐藏: //隐藏导航栏 [self.navigationController setNavigationBa ...
- Android仅2步实现 滚粗 汉堡导航栏效果~ 全新底部导航交互(滑动隐藏)
本文同步自wing的地方酒馆 布吉岛大家有木有看这一篇文章,再见,汉堡菜单,我们有了新的 Android 交互设计方案 本库下载地址:https://github.com/githubwing/Bye ...
- iOS---实现简书和知乎的上滑隐藏导航栏下拉显示导航栏效果
因为自己用简书和知乎比较多,所以对其导航栏的效果比较好奇,自己私下里找资料实现了一下.这个效果的关键点在于下方可供滑动的内容的便宜距离inset的改变,以及滑动的scrollview代理的执行,废话不 ...
- iOS 设置导航栏的颜色和导航栏上文字的颜色
#import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @pr ...
随机推荐
- linux驱动程序之电源管理之新版linux系统设备架构中关于电源管理方式的变更
新版linux系统设备架构中关于电源管理方式的变更 based on linux-2.6.32 一.设备模型各数据结构中电源管理的部分 linux的设备模型通过诸多结构体来联合描述,如struct d ...
- 集群搭建:主机宽带拨号上网,虚拟机使用桥接模式,该如何ping通外网
首先介绍一下看这篇文章需要的基础.需要了解虚拟机的 虚拟机的三种网络模式,有Linux基础知识,这些都是前提.首先介绍一下我的环境:主机:win7虚拟机:VMware Workstation 10虚拟 ...
- HW5.4
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...
- 使用 AppFuse 的七个理由
mvn -e archetype:generate -B -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfus ...
- HDU 1102 Constructing Roads (最小生成树)
最小生成树模板(嗯……在kuangbin模板里面抄的……) 最小生成树(prim) /** Prim求MST * 耗费矩阵cost[][],标号从0开始,0~n-1 * 返回最小生成树的权值,返回-1 ...
- oracle11 客户端安装及PLSQL和TOAD中文乱码
oracle11 客户端安装及PLSQL和TOAD中文乱码 1.从Oracle官方下载“Instant Client Package”的软件,较好的实现了Oracle客户端绿化的解决方案. 下载地址为 ...
- HDU--1533--Going Home--KM算法
Going Home Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
- Delphi调用java开发的WebService,传入参数出错
http://www.cnblogs.com/zhangzhifeng/p/3397053.html 调用没有参数的服务正常,当调用有参数的服务出现以下错误java.util.concurrent.E ...
- android104 帧动画,补间动画,属性动画
##帧动画FrameAnimation* 多张图片快速切换,形成动画效果* 帧动画使用xml定义 package com.itheima.frameanimation; import android. ...
- C# - 系统类 - String类
String类 ns:System String类封装了一系列不能被改变的Unicode字符序列 字符属于引用类型 但它又具有值类型的行为 固定不变意味着 一旦在托管堆中分配了一块内存来存储字符 字符 ...