• IOS 滑动指示导航栏 渐变


    关于导航栏渐变,本人在写APP的时候,发现了各路大神各现其通,其实我觉得这个是个很简单的问题,不需要搞得那么麻烦,对个项目要求整齐来说,一般会建一个工具类,自定义View,各个同事需要的时候,直接调用即可,如下代码:

    -(void)craetNavBar{
        self.Naviews=[[NavBarViewHiddenAphle alloc]initWithFrame:CGRectMake(0, 0, ScreenWidth, Height_NavBar)];
        self.Naviews.alpha = 0.0;
        self.Naviews.delegate=self;
        [self.view addSubview:self.Naviews];
    }

    -(void)scrollViewDidScroll:(UIScrollView *)scrollView{ CGFloat minAlphaOffset = - Height_NavBar; CGFloat maxAlphaOffset = 200; CGFloat offset = scrollView.contentOffset.y; CGFloat alpha = (offset - minAlphaOffset) / (maxAlphaOffset - minAlphaOffset); // if (offset <= 0) { // self.Naviews.alpha = 0.0; // }else{ // self.Naviews.alpha = alpha; // NSLog(@"%f",alpha); // // }或者: if (offset <= 0) { self.Naviews.alpha = 0.0; }else{ self.Naviews.alpha = offset/maxAlphaOffset; NSLog(@"%f",alpha); } }

    第二种方式便是,运行时动态绑定

    我们可以在运行时动态绑定他的背景视图,然后设置他的背景透明度,网上有一个通过类别方式动态绑定实现导航栏颜色渐变的三方框架,感兴趣的朋友可以自行去研究研究LTNavigation。

    第三便是直接获取那张ImageView,然后设置他的透明度。

    其实我们从结构图中可以看出来,它是NavigationBar的子视图,我们可以通过for…in循环遍历navigationBar.subviews,然后获得这个view。

    - (void)viewDidAppear:(BOOL)animated
    {
        [super viewDidAppear:animated];
        //设置透明导航栏
        UIView *barImageView = self.navigationController.navigationBar.subviews.firstObject;
        barImageView.alpha = 0.0;
    }
    
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView
    {
        CGFloat minAlphaOffset = - 88;
        CGFloat maxAlphaOffset = 200;
        CGFloat offset = scrollView.contentOffset.y;
        CGFloat alpha;
        if (offset <= 0) {
            alpha = 0.0;
        } else {
            alpha = (offset - minAlphaOffset) / (maxAlphaOffset - minAlphaOffset);
        }
        UIView *barImageView = self.navigationController.navigationBar.subviews.firstObject;
        barImageView.alpha = alpha;
    }
  • 相关阅读:
    halcon算子翻译——close_framegrabber
    switch case 注意事项+1 及 case合并综合练习例子
    switch case 注意事项
    switch case
    equals()方法 与 == 区别
    if else 选择机构 _多重if选择机构_if选择结构嵌套(综合练习题——code)
    程序流程控制三大结构
    国外著名java论坛(FQ也要看!)
    键盘接收用户输入案例1——计算两数和
    键盘接收用户输入案例2(案例内容包含键盘接收 int、String、Char、double、boolean)等类型及介绍
  • 原文地址:https://www.cnblogs.com/henusyj-1314/p/10824485.html
Copyright © 2020-2023  润新知