思路
根據(jù)滑動(dòng)的距離修改顏色,在scrollView 代理
- (void)scrollViewDidScroll:(UIScrollView*)scrollView
修改顏色的方法
1、通過(guò)設(shè)置NavigationBar的背景圖片來(lái)修改顏色
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageWithColor:[kNavColor colorWithAlphaComponent:alpha] andSize:CGSizeMake(1, 1)] forBarMetrics:UIBarMetricsDefault];
需要注意的有兩點(diǎn):
一:同時(shí)要修改statusBar的顏色
[[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent];
二:要設(shè)置navigationBar的shadowImage
self.navigationController.navigationBar.shadowImage = [[UIImage alloc] init];
2、在navigationBar的圖層中添加一層View,動(dòng)態(tài)的設(shè)置View的背影色來(lái)修改navigationBar的背景色(這是看了動(dòng)態(tài)修改UINavigationBar的背景顏色這篇文章學(xué)到的方法)
核心代碼是:
static char overlayKey;
- (UIView *)overlay
{ return objc_getAssociatedObject(self, &overlayKey);
} - (void)setOverlay:(UIView *)overlay{ objc_setAssociatedObject(self, &overlayKey, overlay, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
這個(gè)是用objcRuntime給類(lèi)別添加屬性,相關(guān)的可以看這篇博客