我是靠谱客的博主 无私鱼,最近开发中收集的这篇文章主要介绍iOS UITableView滑动使导航栏透明度渐变,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

//给导航条设置一个空的背景图 使其透明化

[self.navigationController.navigationBar setBackgroundImage:[UIImagenew] forBarMetrics:UIBarMetricsDefault];

//去除导航条透明后导航条下的黑线

[self.navigationController.navigationBar setShadowImage:[UIImagenew]];

根据UITableView 的scrollViewDidScroll方法,我们能实时获得contentOffset.y值,根据该值的变化对刚才扩展的UINavigationBar的背景色的alpha值,做相应的变化,具体实现:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGFloat reOffset = scrollView.contentOffset.y + (kScreenH - 64) * 0.2; 
    CGFloat alpha = reOffset / ((kScreenH - 64) * 0.2);
    if (alpha <= 1)//下拉永不显示导航栏
    {
        alpha = 0;
    }
    else//上划前一个导航栏的长度是渐变的
    {
        alpha -= 1;
    }
    // 设置导航条的背景图片 其透明度随  alpha 值 而改变
    UIImage *image = [self imageWithColor:[UIColor colorWithRed:0.227 green:0.753 blue:0.757 alpha:alpha]];
    [self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
}
/// 使用颜色填充图片
- (UIImage *)imageWithColor:(UIColor *)color
{
    // 描述矩形
    CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
    // 开启位图上下文
    UIGraphicsBeginImageContext(rect.size);
    // 获取位图上下文
    CGContextRef context = UIGraphicsGetCurrentContext();
    // 使用color演示填充上下文
    CGContextSetFillColorWithColor(context, [color CGColor]);
    // 渲染上下文
    CGContextFillRect(context, rect);
    // 从上下文中获取图片
    UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
    // 结束上下文
    UIGraphicsEndImageContext();
    return theImage;
}

最后

以上就是无私鱼为你收集整理的iOS UITableView滑动使导航栏透明度渐变的全部内容,希望文章能够帮你解决iOS UITableView滑动使导航栏透明度渐变所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部