美文网首页
动态的修改UINavigationBar的颜色

动态的修改UINavigationBar的颜色

作者: LiLi_哩哩 | 来源:发表于2016-03-01 10:53 被阅读286次

思路

根据滑动的距离修改颜色,在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给类别添加属性,相关的可以看这篇博客

相关文章

网友评论

      本文标题:动态的修改UINavigationBar的颜色

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