iOS navigationBar和tabBar变透明 & navigationBar根据滑动距离的渐变色实现

navigationBar变为纯透明

//第一种方法

//导航栏纯透明

[self.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];

//去掉导航栏底部的黑线

self.navigationBar.shadowImage = [UIImage new];

//第二种方法

[[self.navigationBar subviews] objectAtIndex:0].alpha = 0;

tabBar同理

[self.tabBar setBackgroundImage:[UIImage new]];

self.tabBar.shadowImage = [UIImage new];

navigationBar根据滑动距离的渐变色实现

//第一种

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

{

CGFloat offsetToShow = 200.0;//滑动多少就完全显示

CGFloat alpha = 1 - (offsetToShow - scrollView.contentOffset.y) / offsetToShow;

[[self.navigationController.navigationBar subviews] objectAtIndex:0].alpha = alpha;

}

//第二种

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

{

CGFloat offsetToShow = 200.0;

CGFloat alpha = 1 - (offsetToShow - scrollView.contentOffset.y) / offsetToShow;

[self.navigationController.navigationBar setShadowImage:[UIImage new]];

[self.navigationController.navigationBar setBackgroundImage:[self imageWithColor:[[UIColor orangeColor]colorWithAlphaComponent:alpha]] forBarMetrics:UIBarMetricsDefault];

}

//生成一张纯色的图片

- (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;

}

时间: 2024-10-07 21:37:22

iOS navigationBar和tabBar变透明 & navigationBar根据滑动距离的渐变色实现的相关文章

设置iOS APP背景图全屏&NavigationBar透明

Make UINavigationBar transparent 1.使用统一的背景图片 在AppDelegate.swift中添加如下代码: var img=UIImage(named:"background.jpg") var imageView:UIImageView? self.imageView=UIImageView(frame: self.window!.frame) self.imageView?.image=img self.window?.addSubview(se

解决透明NavigationBar底部出现莫名其妙横线问题

有一个页面要实现透明NavigationBar,实现了之后发现一个奇怪的问题:第一次进入此页面显示透明NavigationBar正常,返回上一级页面再重新进入,NavigationBar的底部出现了一条大约1px的横线,怎么都消除不了. 用Reveal查了一下这个横线,是一个UIImageView,0.5px高度,第一次正常显示的时候center y坐标为63.75,所以显示正常:返回上一级页面时再重新进入,center y坐标为64.25,正好出现在NavigationBar的下面而没有被它覆

设置透明navigationBar

三行代码轻松实现透明navigationBar:  [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; [self.navigationController.navigationBar setShadowImage:[UIImage new]]; [self.navigationController.navigationBar s

iOS导航控制器常用函数与navigationBar常用属性

导航控制器常用函数触发时机 当视图控制器的View将要出现时触发 - (void)viewWillAppear:(BOOL)animated 当视图控制器的View已经出现时触发 - (void)viewDidAppear:(BOOL)animated 当视图控制器的View将要消失时触发 - (void)viewWillDisappear:(BOOL)animated 当视图控制器的View已经消失时触发 - (void)viewDidDisappear:(BOOL)animated 当由前一

iOS 将一个View显示覆盖到NavigationBar上面

将一个View显示覆盖到NavigationBar上面,不能将将要显示的View添加到self.view上面,这样无法覆盖navigationBar. 如果需要覆盖NavigationBar,则将显示的view添加到self.navigationController.view [self.navigationController.view addSubview:newView]; 效果如下: -- end 版权声明:本文为博主原创文章,转载请注明来源:http://blog.csdn.net/z

让导航栏变透明,去掉导航栏下面的线

下面代码可以让导航栏变透明 [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsCompact];或者可以照一张透明的图片来填充也可以 隐藏导航栏下面的那根线navigationBar.shadowImage 这个方法不知为啥没用了 现在可以用下面这个代码这个代码是让下面那条线消失NSArray *list = self.navigationBar.

ios 导航栏透明, 上下滑动 导航栏 颜色渐变

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "PingFang SC"; color: #008400 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #3d1d81 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #008400 } p.p4 {

前端小demo——遮罩层逐渐变透明

点击按钮触发事件使遮罩层逐渐变透明 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> img { width: 430px; height: 280px; } div { width: 1600px; height: 300px; background

ios根据gps坐标来计算两点间的距离

//ios根据gps坐标来计算两点间的距离 //x1,y1 点1的坐标 x2,y2点2的坐标 -(double) gps2m:(double)x1 _y1:(double)y1 _x2:(double)x2 _y2:(double)y2{ double radLat1 = (x1 * 3.1416 / 180.0); double radLat2 = (x2 * 3.1416 / 180.0); double a = radLat1 - radLat2; double b = (y1 - y2)