美文网首页
iOS navigationBar的半透明颜色渐变效果实现

iOS navigationBar的半透明颜色渐变效果实现

作者: Heikki_ | 来源:发表于2016-11-29 15:03 被阅读145次

    第一步:
    在viewWillAppear方法中先设置navigationController的代理为self(控制器本身)。

    -(void)viewWillAppear:(BOOL)animated
    {
        [superviewWillAppear:animated];
         self.navigationController.delegate =self;
     }
    

    第二步:

    在navigationController这个代理方法中判断一下,如果是此控制器就设置透明,不是此控制器就设置成不同样式,这样做的目的是,当你进入navigationBar透明的这个控制器后,不管push还是pop到别的控制器时,navigationBar不会变成透明。

    -(void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
    {
        if (viewController == self) {
            // 背景设置为黑色
            self.navigationController.navigationBar.tintColor = [UIColor blackColor];
            // 透明度设置为0.3
            self.navigationController.navigationBar.alpha = 0;
            // 设置为半透明
            self.navigationController.navigationBar.translucent = YES;
         
          } else {
            // 进入其他视图控制器
            self.navigationController.navigationBar.alpha = 1;
            // 背景颜色设置为系统默认颜色
            self.navigationController.navigationBar.tintColor = nil;
            self.navigationController.navigationBar.translucent = NO;
        }
    }
    

    第三步:
    当拖动你的tableView或者collectionView时,会调用UIScrollowView的这个代理方法,在它里面做navigationBar颜色渐变的操作。

    - (void)scrollViewDidScroll:(UIScrollView *)scrollView
    {
         CGFloat offsetY = scrollView.contentOffset.y;
        if (offsetY >50) {
            CGFloat alpha =MIN(1,1 - ((50 +64 - offsetY) / 64));
            self.navigationController.navigationBar.alpha = alpha;
        }else
        {
            self.navigationController.navigationBar.alpha = 0;
    
        }
        
    }
    

    第四步:
    此时渐变效果就完成了,但是别忘了,一个程序有且只有一个navigationController,我们在第一步的时候,在viewWillAppear方法里将self.navigationController.delegate =self;当此控制器消失时,会造成delegate的混乱,所以当每次带透明navigationBar效果的控制器消失时,调用dealloc方法。

    -(void)dealloc
    {
        self.navigationController.delegate =nil;
    }
    

    相关文章

      网友评论

          本文标题:iOS navigationBar的半透明颜色渐变效果实现

          本文链接:https://www.haomeiwen.com/subject/hvnapttx.html