美文网首页程序员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