/XXNavigation

UINavigationBar的颜色随着ScrollView的滑动而产生渐变以及 Push 之后的返回动作完善.

Primary LanguageObjective-C

XXNavigation

UINavigationBar的颜色随着ScrollView的滑动而产生渐变以及 Push 之后的返回动作完善.

实现方式比较简单,并没有用 runtime 相关的API,只需要在scrollViewDidScroll:方法内根据透明度开启图形上下文绘制图像.

####效果图:

####使用方法:

关键步骤:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
    self.navAlpha = MIN(0.99 , self.tableView.contentOffset.y / 100);
    [self.navigationController.navigationBar setBackgroundImage:[self imageWithBgColor:[BlackNavigationColor colorWithAlphaComponent:self.navAlpha]] forBarMetrics:UIBarMetricsDefault];
}

需要注意的细节:

- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    // ShadowImage
    [self.navigationController.navigationBar setShadowImage:[self imageWithBgColor:[BlackNavigationColor colorWithAlphaComponent:0]]];
    [self scrollViewDidScroll:self.tableView];
}

- (void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    [self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
}

可以将关键语句抽出写一个基类控制器,然后继承即可. 还有不明白的详见 Demo, 里面写的很详细.