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;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。