这篇文章主要介绍iOS中tableView如何实现头部拉伸并改变导航条渐变色,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
创新互联是一家专注于网站设计制作、成都网站设计与策划设计,北戴河网站建设哪家好?创新互联做网站,专注于网站建设十载,网设计领域的专业建站公司;建站业务涵盖:北戴河等地区。北戴河做网站价格咨询:18982081108具体内容如下
#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中tableView如何实现头部拉伸并改变导航条渐变色”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联网站建设公司行业资讯频道!
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款