iOS tableView实现头部拉伸并改变导航条渐变色
更新时间:2018年05月08日 14:26:33 作者:小手一背爱谁谁
这篇文章主要为大家详细介绍了iOS tableView实现头部拉伸并改变导航条渐变色,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了iOS tableView实现头部拉伸改变,导航条渐变色的具体代码,供大家参考,具体内容如下
#import "TableViewController.h" static NSString *ident = @"cell"; #define RGBA(r,g,b,a) [UIColor colorWithRed:r/255.0f green:g/255.0f blue:b/255.0f alpha:a] #define RGB(r,g,b) RGBA(r,g,b,1.0f) #define ZhuTiColor RGB(76,16,198) #define ZhuTiColorAlpha(alpha) RGBA(76, 16, 198, alpha) // 判断是否是iPhone X #define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO) // 状态栏高度 #define STATUS_BAR_HEIGHT (iPhoneX ? 44.f : 20.f) // 导航栏高度 #define NAVIGATION_BAR_HEIGHT (iPhoneX ? 88.f : 64.f) // tabBar高度 #define TAB_BAR_HEIGHT (iPhoneX ? (49.f + 34.f) : 49.f) // home indicator #define HOME_INDICATOR_HEIGHT (iPhoneX ? 34.f : 0.f) #define ScreenWidth ([UIScreen mainScreen].bounds.size.width) #define ScreenHeight ([UIScreen mainScreen].bounds.size.height) #define imageHight 200 @interface TableViewController () @property (nonatomic,strong) UIImageView *headImage; @property (nonatomic, strong) UIView *headerBackView; @property (nonatomic, strong) UIView *mengView; @end @implementation TableViewController - (void)viewDidLoad { [super viewDidLoad]; [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:ident]; self.view.backgroundColor = [UIColor redColor]; self.tableView.tableHeaderView = self.headerBackView; [self.headerBackView addSubview:self.headImage]; [self.headImage addSubview:self.mengView]; [self navCleanFromAlpha:0]; } -(void)navCleanFromAlpha:(CGFloat)alpha { [self.navigationController.navigationBar setBackgroundImage:[self createImageWithColor:ZhuTiColorAlpha(alpha)] forBarMetrics:UIBarMetricsDefault]; self.navigationController.navigationBar.shadowImage = [UIImage new]; } -(UIImage*) createImageWithColor:(UIColor*) color { CGRect rect=CGRectMake(0.0f, 0.0f, 1.0f, 1.0f); UIGraphicsBeginImageContext(rect.size); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(context, [color CGColor]); CGContextFillRect(context, rect); UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return theImage; } -(UIImageView *)headImage { if(!_headImage) { _headImage= [[UIImageView alloc]initWithFrame: self.headerBackView.bounds]; _headImage.image = [UIImage imageNamed:@"1024"]; } return _headImage; } -(UIView *)mengView { if (!_mengView) { _mengView = [[UIView alloc]initWithFrame:self.headerBackView.bounds]; _mengView.backgroundColor = RGBA(1, 1, 1, 0.1); } return _mengView; } -(UIView *)headerBackView { if (!_headerBackView) { _headerBackView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, ScreenWidth, imageHight)]; [_headerBackView setBackgroundColor:[UIColor lightGrayColor]]; } return _headerBackView; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (void)scrollViewDidScroll:(UIScrollView *)scrollView { //---------------------- 图片拉升 ------------------------- //图片高度 CGFloat imageHeight = self.headerBackView.frame.size.height; //图片宽度 CGFloat imageWidth = ScreenWidth; //图片上下偏移量 CGFloat imageOffsetY = scrollView.contentOffset.y; // NSLog(@"图片上下偏移量 imageOffsetY:%f ->",imageOffsetY); //上移 if (imageOffsetY < 0) { CGFloat totalOffset = imageHeight + ABS(imageOffsetY); CGFloat f = totalOffset / imageHeight; self.headImage.frame = CGRectMake(-(imageWidth * f - imageWidth) * 0.5, imageOffsetY, imageWidth * f, totalOffset); self.mengView.frame = self.headImage.bounds; } //------------------- 导航条颜色渐变 ---------------------------- CGFloat tableViewOffsetY = [self.tableView rectForSection:0].origin.y - NAVIGATION_BAR_HEIGHT; CGFloat contentOffsetY = scrollView.contentOffset.y; if (contentOffsetY >= tableViewOffsetY) { // scrollView.contentOffset = CGPointMake(0, tableViewOffsetY); //定位 [self navCleanFromAlpha:1]; } else { CGFloat alpha = scrollView.contentOffset.y/imageHight; if (alpha >= 1) { alpha = 1; } if (alpha <= 0) { alpha = 0; } NSLog(@"%.2f",alpha); [self navCleanFromAlpha:alpha]; } } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 20; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ident forIndexPath:indexPath]; // Configure the cell... cell.textLabel.text = [NSString stringWithFormat:@"asdada = %zd",indexPath.row]; return cell; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
iOS中的表单按钮选项UIActionSheet常用方法整理
UIActionSheet经常被用来制作各种弹出的选项,这里我们就来看一下iOS中的表单按钮选项UIActionSheet常用方法整理,需要的朋友可以参考下2016-06-06IOS 中loadView,viewDidLoad,viewDidUnload详解及使用
这篇文章主要介绍了IOS 中loadView,viewDidLoad,viewDidUnload详解及使用的相关资料,需要的朋友可以参考下2017-02-02
最新评论