iOS tableView实现头部拉伸并改变导航条渐变色
本文实例为大家分享了iOStableView实现头部拉伸改变,导航条渐变色的具体代码,供大家参考,具体内容如下
#import"TableViewController.h" staticNSString*ident=@"cell"; #defineRGBA(r,g,b,a)[UIColorcolorWithRed:r/255.0fgreen:g/255.0fblue:b/255.0falpha:a] #defineRGB(r,g,b)RGBA(r,g,b,1.0f) #defineZhuTiColorRGB(76,16,198) #defineZhuTiColorAlpha(alpha)RGBA(76,16,198,alpha) //判断是否是iPhoneX #defineiPhoneX([UIScreeninstancesRespondToSelector:@selector(currentMode)]?CGSizeEqualToSize(CGSizeMake(1125,2436),[[UIScreenmainScreen]currentMode].size):NO) //状态栏高度 #defineSTATUS_BAR_HEIGHT(iPhoneX?44.f:20.f) //导航栏高度 #defineNAVIGATION_BAR_HEIGHT(iPhoneX?88.f:64.f) //tabBar高度 #defineTAB_BAR_HEIGHT(iPhoneX?(49.f+34.f):49.f) //homeindicator #defineHOME_INDICATOR_HEIGHT(iPhoneX?34.f:0.f) #defineScreenWidth([UIScreenmainScreen].bounds.size.width) #defineScreenHeight([UIScreenmainScreen].bounds.size.height) #defineimageHight200 @interfaceTableViewController() @property(nonatomic,strong)UIImageView*headImage; @property(nonatomic,strong)UIView*headerBackView; @property(nonatomic,strong)UIView*mengView; @end @implementationTableViewController -(void)viewDidLoad{ [superviewDidLoad]; [self.tableViewregisterClass:[UITableViewCellclass]forCellReuseIdentifier:ident]; self.view.backgroundColor=[UIColorredColor]; self.tableView.tableHeaderView=self.headerBackView; [self.headerBackViewaddSubview:self.headImage]; [self.headImageaddSubview:self.mengView]; [selfnavCleanFromAlpha:0]; } -(void)navCleanFromAlpha:(CGFloat)alpha { [self.navigationController.navigationBarsetBackgroundImage:[selfcreateImageWithColor:ZhuTiColorAlpha(alpha)]forBarMetrics:UIBarMetricsDefault]; self.navigationController.navigationBar.shadowImage=[UIImagenew]; } -(UIImage*)createImageWithColor:(UIColor*)color { CGRectrect=CGRectMake(0.0f,0.0f,1.0f,1.0f); UIGraphicsBeginImageContext(rect.size); CGContextRefcontext=UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(context,[colorCGColor]); CGContextFillRect(context,rect); UIImage*theImage=UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); returntheImage; } -(UIImageView*)headImage { if(!_headImage) { _headImage=[[UIImageViewalloc]initWithFrame:self.headerBackView.bounds]; _headImage.image=[UIImageimageNamed:@"1024"]; } return_headImage; } -(UIView*)mengView { if(!_mengView) { _mengView=[[UIViewalloc]initWithFrame:self.headerBackView.bounds]; _mengView.backgroundColor=RGBA(1,1,1,0.1); } return_mengView; } -(UIView*)headerBackView { if(!_headerBackView) { _headerBackView=[[UIViewalloc]initWithFrame:CGRectMake(0,0,ScreenWidth,imageHight)]; [_headerBackViewsetBackgroundColor:[UIColorlightGrayColor]]; } return_headerBackView; } -(void)didReceiveMemoryWarning{ [superdidReceiveMemoryWarning]; //Disposeofanyresourcesthatcanberecreated. } -(void)scrollViewDidScroll:(UIScrollView*)scrollView { //----------------------图片拉升------------------------- //图片高度 CGFloatimageHeight=self.headerBackView.frame.size.height; //图片宽度 CGFloatimageWidth=ScreenWidth; //图片上下偏移量 CGFloatimageOffsetY=scrollView.contentOffset.y; //NSLog(@"图片上下偏移量imageOffsetY:%f->",imageOffsetY); //上移 if(imageOffsetY<0) { CGFloattotalOffset=imageHeight+ABS(imageOffsetY); CGFloatf=totalOffset/imageHeight; self.headImage.frame=CGRectMake(-(imageWidth*f-imageWidth)*0.5,imageOffsetY,imageWidth*f,totalOffset); self.mengView.frame=self.headImage.bounds; } //-------------------导航条颜色渐变---------------------------- CGFloattableViewOffsetY=[self.tableViewrectForSection:0].origin.y-NAVIGATION_BAR_HEIGHT; CGFloatcontentOffsetY=scrollView.contentOffset.y; if(contentOffsetY>=tableViewOffsetY) { //scrollView.contentOffset=CGPointMake(0,tableViewOffsetY);//定位 [selfnavCleanFromAlpha:1]; } else { CGFloatalpha=scrollView.contentOffset.y/imageHight; if(alpha>=1){alpha=1;} if(alpha<=0){alpha=0;} NSLog(@"%.2f",alpha); [selfnavCleanFromAlpha:alpha]; } } -(NSInteger)tableView:(UITableView*)tableViewnumberOfRowsInSection:(NSInteger)section{ return20; } -(UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIndexPath*)indexPath{ UITableViewCell*cell=[tableViewdequeueReusableCellWithIdentifier:identforIndexPath:indexPath]; //Configurethecell... cell.textLabel.text=[NSStringstringWithFormat:@"asdada=%zd",indexPath.row]; returncell; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。