文章来源:淘论文网   发布者: 毕业设计   浏览量: 32



还可以点击去查询以下关键词:
[渐变]    [透明度]    [导航]    [CZHGradientNavigationController]    [ios 渐变透明度导航栏(CZHGradientNavigationController)]   

项目介绍:

功能实现很简单

1、首先创建一个父类的控制器,在viewWillAppear和viewWillDissAppear方法里面 如下:

- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; //导航栏的透明属性设为yes self.navigationController.navigationBar.translucent = YES; //背景图片和分割线清空 [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault]; [self.navigationController.navigationBar setShadowImage:[[UIImage alloc] init]]; //电池条颜色 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; //导航栏字体样式 [self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:CZHNavigationBarTranslucentTitleColor,NSForegroundColorAttributeName, CZHNavigationBarTitleFont,NSFontAttributeName,nil]]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; //导航栏的透明属性设为no self.navigationController.navigationBar.translucent = NO; //背景图片和分割线设为默认 [self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; [self.navigationController.navigationBar setShadowImage:nil]; [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault]; [self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:CZHNavigationBarNormalTitleColor,NSForegroundColorAttributeName, CZHNavigationBarTitleFont,NSFontAttributeName,nil]]; }

2、需要滚动渐变的控制器,开题报告,先继承父类控制器,然后在viewWillAppear和viewWillDissAppear方法里面 ,如下

- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; //允许滚动 self.tableView.scrollEnabled = YES; [self scrollViewDidScroll:self.tableView]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; //禁止滚动,以免走了这个方法后还会走scrollViewDidScroll方法 self.tableView.scrollEnabled = NO; }

3、在scrollViewDidScroll方法里面写判断,改变左右按钮的图片

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { CGFloat offsetY = self.tableView.contentOffset.y; if (offsetY >= CZHNavigationBarHeight) { [self.backButton setImage:[UIImage imageNamed:@'back_black'] forState:UIControlStateNormal]; [self.moreButton setImage:[UIImage imageNamed:@'information_more_black'] forState:UIControlStateNormal]; } else if (offsetY < CZHNavigationBarHeight && offsetY > 0) { [self.backButton setImage:[UIImage imageNamed:@'back_black'] forState:UIControlStateNormal]; [self.moreButton setImage:[UIImage imageNamed:@'information_more_black'] forState:UIControlStateNormal]; } else { [self.backButton setImage:[UIImage imageNamed:@'back_white'] forState:UIControlStateNormal]; [self.moreButton setImage:[UIImage imageNamed:@'information_more_white'] forState:UIControlStateNormal]; } //改变导航栏文字样式,透明度 [CZHNavagationBarTranslucentTool czh_changeNavigationBarTransparencyWithViewController:self contentOffsetY:offsetY]; }

4、在工具类里面,改变导航栏文字样式,透明度

+ (void)czh_changeNavigationBarTransparencyWithViewController:(UIViewController *)viewController contentOffsetY:(CGFloat)contentOffsetY { if (contentOffsetY >= CZHNavigationBarHeight) { [viewController.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:CZHNavigationBarNormalTitleColor,NSForegroundColorAttributeName, CZHNavigationBarTitleFont,NSFontAttributeName,nil]]; [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault]; [viewController.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; [viewController.navigationController.navigationBar setShadowImage:nil]; } else if (contentOffsetY < CZHNavigationBarHeight && contentOffsetY > 0) { [viewController.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:CZHNavigationBarNormalTitleColor,NSForegroundColorAttributeName, CZHNavigationBarTitleFont,NSFontAttributeName,nil]]; [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault]; CGFloat alpha = contentOffsetY / CZHNavigationBarHeight; [viewController.navigationController.navigationBar setBackgroundImage:[UIColor imageWithColor:CZHRGBColor(0xffffff, alpha)] forBarMetrics:UIBarMetricsDefault]; [viewController.navigationController.navigationBar setShadowImage:[[UIImage alloc] init]]; } else { [viewController.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:CZHNavigationBarTranslucentTitleColor,NSForegroundColorAttributeName, CZHNavigationBarTitleFont,NSFontAttributeName,nil]]; [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; [viewController.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault]; [viewController.navigationController.navigationBar setShadowImage:[[UIImage alloc] init]]; } }

5、大功告成就是介么的简单

#p#分页标题#e#

6、创建了一个navigationController父类,一些操作可以在父类导航栏里面做

+ (void)load { // 设置整个项目所有item的主题样式 UIBarButtonItem *item = [UIBarButtonItem appearance]; UIFont *font = CZHNavigationBarTitleFont; UIColor *navigationFontC = CZHNavigationBarNormalTitleColor; UIColor *navigationBatTintC = CZHColor(0xffffff); // 设置普通状态 // key:NS****AttributeName NSMutableDictionary *textAttrs = [NSMutableDictionary dictionary]; textAttrs[NSForegroundColorAttributeName] = navigationFontC; textAttrs[NSFontAttributeName] = font; [item setTitleTextAttributes:textAttrs forState:UIControlStateNormal]; // 设置高亮状态 NSMutableDictionary *disableTextAttrs = [NSMutableDictionary dictionary]; disableTextAttrs[NSForegroundColorAttributeName] = navigationFontC; disableTextAttrs[NSFontAttributeName] = font; [item setTitleTextAttributes:disableTextAttrs forState:UIControlStateHighlighted]; UINavigationBar *navigationBar = [UINavigationBar appearance]; navigationBar.barTintColor = navigationBatTintC; NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:navigationFontC,NSForegroundColorAttributeName, font,NSFontAttributeName,nil]; navigationBar.titleTextAttributes = dict; navigationBar.tintColor = CZHNavigationBarNormalTitleColor; } - (void)viewDidLoad { [super viewDidLoad]; self.navigationBar.translucent = NO; } - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { if (self.viewControllers.count) { // 这时push进来的控制器viewController,不是第一个子控制器(不是根控制器) /* 自动显示和隐藏tabbar */ viewController.hidesBottomBarWhenPushed = YES; /* 设置导航栏上面的内容 */ // 设置左边的返回按钮 UIBarButtonItem *leftSpacer = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]; leftSpacer.width = -10; //根据不同的控制器展示不同的按钮 if ([viewController isKindOfClass:[CZHGradientBaseController class]]) { UIBarButtonItem *backItem = [UIBarButtonItem czh_itemWithTarget:self action:@selector(back) image:@'back_white' highImage:@'back_white']; viewController.navigationItem.leftBarButtonItem = backItem; } else if ([viewController isKindOfClass:[CZHGradientTableViewController class]]) { } else { UIBarButtonItem *backItem = [UIBarButtonItem czh_itemWithTarget:self action:@selector(back) image:@'back_black' highImage:@'back_black']; viewController.navigationItem.leftBarButtonItem = backItem; } } [super pushViewController:viewController animated:animated]; CZHLog(@'push---%@--%@', self.viewControllers,viewController); } - (void)back { CZHLog(@'pop-----%@', self.viewControllers); [[NSNotificationCenter defaultCenter] postNotificationName:CZHNavigationControllerDidBack object:nil]; if (self.viewControllers.count > 1) { UIViewController *lastVC = [self.viewControllers lastObject]; if ([lastVC isKindOfClass:[CZHNormalController class]]) {//如果当前控制器是,直接return接收代理做处理,论文,然后接收通知方法,点击返回按钮做自己需要的操作 return; } } [self popViewControllerAnimated:YES]; }

博客地址
github地址
简书地址


这里还有:


还可以点击去查询:
[渐变]    [透明度]    [导航]    [CZHGradientNavigationController]    [ios 渐变透明度导航栏(CZHGradientNavigationController)]   

请扫码加微信 微信号:sj52abcd


下载地址: http://www.taolw.com/down/3117.docx
  • 上一篇:UITableView无数据时的提示UITableViewPlaceholder
  • 下一篇:绘图、手毕业设计势综合App