美文网首页程序员iOS
iOS 导航栏随ScrollerView渐变透明、渐变高度

iOS 导航栏随ScrollerView渐变透明、渐变高度

作者: YW_Drenched | 来源:发表于2018-08-01 16:12 被阅读4次
    自从iOS11出来后,发现这种随着scrollerView移动而改变导航栏透明度和高度的app越来越多,废话不多说,直接上图看效果
    渐变透明
    渐变高度
    首先说说我的思路:
    • 首先创建一个UINavigationBar的分类,将backgroundImageshadowImage设置为空的UIimage

    • 接着用运行时动态的绑定一个View,并添加到NavigationBar视图的最底层

    • 最后,在ScrollerView的Delegate方法scrollViewDidScroll中,对这个添加Viewalhpatransform根据scrollView.contentOffset.y进行相关处理即可

    我在github上面也找到类似的框架LTNavigationBar,但是这里值得注意的是,iOS11之后的导航栏与之前的结构上面发生了点小变化,所以在iOS11的机器上跑是会崩掉的。原因是因为在iOS11中 UINavigationBar 没有_leftViews_rightViews_titleView这些key,所以用KVC会直接崩掉。所以我在这个轮子的基础上做了些许修改,适配了iOS11

    if (@available(iOS 11.0,*)) {
            [[self subviews] enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
                if ([obj isKindOfClass:NSClassFromString(@"_UINavigationBarContentView")]) {
                    
                    for (UIView *view in [obj subviews])
                    {
                        view.alpha = alpha;
                    }
                }
            }];
        }
    
    

    下面是完整的Demo,欢迎大家对我的轮子点✨✨

    相关文章

      网友评论

      • DDY:为什么系统实现了的功能,你们自己又自己实现一遍???
        YW_Drenched:哦?有系统自带的方法吗?可以告诉我是哪个方法吗?:smiley:

      本文标题:iOS 导航栏随ScrollerView渐变透明、渐变高度

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