iOS (导航条)navBar 透明

现实开发中会遇到一种情况。UI会把导航条做成透明的,滑动的时候才逐渐显现。不透明的时候样子是这样的。

是挺难看的。

所以想要制作透明的导航条 就要知道一个方法,一个属性

这时 UIImage 这个图看来是必须要画一个了

- (UIImage *)imageWithColor:(UIColor *)color {
    CGRect rect = CGRectMake(0, 0, 1, 1);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    [color setFill];
    CGContextFillRect(context, rect);
    UIImage *imgae = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return imgae;
}

当然也可以给UIImage添加类目

UIImage+colorImge.h

#import <UIKit/UIKit.h>

@interface UIImage (colorImge)
+ (UIImage *)imageWithColor:(UIColor *)color andSize:(CGSize)size;
@end

UIImage+colorImge.m

#import "UIImage+colorImge.h"

@implementation UIImage (colorImge)

+ (UIImage *)imageWithColor:(UIColor *)color andSize:(CGSize)size {

    CGRect rect = CGRectMake(0, 0, size.width, size.height);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, rect);
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    CGContextAddEllipseInRect(context, rect);
    UIGraphicsEndImageContext();
    return image;
}

@end

这样就能直接初始化一个UIImage了

这时我们就可以让导航透明了

效果如图

这时想要做到滑动时逐渐变色类似下图

需要在

- (void)scrollViewDidScroll:(UIScrollView *)scrollView ;方法中做文章了。因为tableVIew继承自scrollView

在这个方法中判断tableVIew的contentOffset.y。先看代码

当前的透明度 = (tableView.contentOffset.y - tableView.contentOffset.y的起点) / (完全不透明的终点 + tableView.contentOffset.y的起点) 一般没做修改的话 tableView.contentOffset.y的起点是0, 完全不透明的终点 就是看你心情 滑动多远的时候导航条全变色。

如果有时间的话可以做做封装。面对多种不同的情况做不同的效果

时间: 2024-10-07 05:06:35

iOS (导航条)navBar 透明的相关文章

【导航条滚动透明】一个分类搞定

下面这个界面有没有觉得很眼熟.打开你手里的App仔细观察,你会发现很多都有实现这个功能.比如美团外卖的首页模块,新浪微博的个人详情页面.要怎么样才能快速的实现这个功能呢!那下面由笔者来告诉你如何三行代码,集成这个功能... 原理介绍: 要想把一个view设计成透明的我们一下子就会想到两种方案,设置view的alpha值为0,或者设置view的backgroundColor为clearColor.但是UINavigationBar是一个比较特殊的视图,它是没有alpha属性的,那我们可以设置opa

iOS 导航条的基本用法

//导航条标题 self.navigationItem.title = @"title"; //导航条返回时文字的设置 self.navigationController.navigationBar.topItem.title= @""; //导航条返回时箭头颜色的设置 self.navigationController.navigationBar.tintColor = [UIColor redColor]; //导航条的颜色 self.navigationCon

ios导航条设置

1 // 3.设置导航条的主题 2 // 如果要同时设置很多UINavigationBar的样式, 可以通过设置UINavigationBar的主题的方式来设置以便简化代码 3 UINavigationBar *navBar = [UINavigationBar appearance]; 4 // 3.1设置所有导航条的背景图片 5 6 [navBar setBackgroundImage:[UIImage imageNamed:@"NavBar64"] forBarMetrics:U

jQueryMobile的组件之导航条(navbar)

data-role="navbar"--指明div元素承载导航条组件: .ui-btn-active--设置按钮为选中状态: data-icon--设置jQueryMobile的内置图标: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <meta name="viewport" content=

iOS 导航栏 不透明

UINavigationBar.appearance().translucent = false UINavigationBar.appearance().barStyle = UIBarStyle.Default ps: Ios7禁止全局设置导航栏的透明状态

iOS 导航条navigationBar设置透明

给navigationBar.barStyle设置通道,然后设置一个全透明的背景图就可以了 self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent; [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"b7003af33a87e9500ee7e7f412385343faf2b4b1.jp

iOS导航条底部 与self.view 的分界线怎么隐藏

设置背景图片 self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault]; 加上下面代码可以取消导航下边的线,此方法也可以使用于tabbar self.navigationController.navigationBar.shadowImage = [[UIImage alloc] init]; 或者 [self.navig

iOS导航栏背景透明渐变

重点分析: 1.隐藏导航的最下面的线. 2.设置导航背景的不透明度(ios7.0以上不用设置,translucent默认的就是Yes不用修改,但如果别人修改了或出现那种情况,需要设置为Yes). 3.页面消失时导航恢复原样. 4.滚动时调用方法设置alpha来控制导航背景的渐变(也是核心,重点在这里). 核心代码如下: 1.将颜色转换为图片 - (UIImage *)imageWithColor:(UIColor *)color { //创建1像素区域并开始图片绘图 CGRect rect =

iOS:导航条滚动透明度随着tableView的滚动而变化

来源:HelloYeah 链接:http://www.jianshu.com/p/b8b70afeda81 下面这个界面有没有觉得很眼熟.打开你手里的App仔细观察,你会发现很多都有实现这个功能.比如美团外卖的首页模块,新浪微博的个人详情页面.要怎么样才能快速的实现这个功能呢!那下面由笔者来告诉你如何三行代码,集成这个功能... 原理介绍: 要想把一个view设计成透明的我们一下子就会想到两种方案,设置view的alpha值为0,或者设置view的backgroundColor为clearCol