动态的修改UINavigationBar的颜色

思路

根据滑动的距离修改颜色,在scrollView 代理

  • (void)scrollViewDidScroll:(UIScrollView*)scrollView

修改颜色的方法

1、通过设置NavigationBar的背景图片来修改颜色

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageWithColor:[kNavColor colorWithAlphaComponent:alpha] andSize:CGSizeMake(1, 1)] forBarMetrics:UIBarMetricsDefault];

需要注意的有两点:
一:同时要修改statusBar的颜色

[[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent];

二:要设置navigationBar的shadowImage

self.navigationController.navigationBar.shadowImage = [[UIImage alloc] init];

2、在navigationBar的图层中添加一层View,动态的设置View的背影色来修改navigationBar的背景色(这是看了动态修改UINavigationBar的背景颜色这篇文章学到的方法)
核心代码是:

static char overlayKey;

  • (UIView *)overlay
    { return objc_getAssociatedObject(self, &overlayKey);
    }
  • (void)setOverlay:(UIView *)overlay{ objc_setAssociatedObject(self, &overlayKey, overlay, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
    }

这个是用objcRuntime给类别添加属性,相关的可以看这篇博客

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容