iOS tableView实现下拉图片放大效果
本文实例为大家分享了iOS实现下拉图片放大效果展示的具体代码,供大家参考,具体内容如下
#import"ViewController.h" #definekScreenbounds[UIScreenmainScreen].bounds #definekScreenWidth[UIScreenmainScreen].bounds.size.width #definekScreenHeight[UIScreenmainScreen].bounds.size.height //宏定义一个高度 #definepictureHeight200 @interfaceViewController()@property(nonatomic,strong)UITableView*tableView; @property(nonatomic,strong)UIImageView*pictureImageView; @property(nonatomic,strong)UIView*header; @end @implementationViewController -(void)viewDidLoad{ [superviewDidLoad]; //Doanyadditionalsetupafterloadingtheview,typicallyfromanib. self.navigationItem.title=@"向下拉伸放大图片"; //下面两个属性的设置是与translucent为NO,坐标变换的效果一样 self.edgesForExtendedLayout=UIRectEdgeNone; self.automaticallyAdjustsScrollViewInsets=NO; [selfcreateTableView]; } -(void)createTableView { self.tableView=[[UITableViewalloc]initWithFrame:CGRectMake(0,0,kScreenWidth,kScreenHeight-64)style:UITableViewStylePlain]; _tableView.delegate=self; _tableView.dataSource=self; [_tableViewregisterClass:[UITableViewCellclass]forCellReuseIdentifier:@"cell"]; //添加头视图在头视图上添加ImageView self.header=[[UIViewalloc]initWithFrame:CGRectMake(0,0,kScreenWidth,pictureHeight)]; _pictureImageView=[[UIImageViewalloc]initWithFrame:_header.bounds]; _pictureImageView.image=[UIImageimageNamed:@"picture"]; /* 重要的属性设置 */ //这个属性的值决定了当视图的几何形状变化时如何复用它的内容这里用UIViewContentModeScaleAspectFill意思是保持内容高宽比缩放内容超出视图的部分内容会被裁减填充UIView _pictureImageView.contentMode=UIViewContentModeScaleAspectFill; //这个属性决定了子视图的显示范围取值为YES时,剪裁超出父视图范围的子视图部分.这里就是裁剪了_pictureImageView超出_header范围的部分. _pictureImageView.clipsToBounds=YES; [_headeraddSubview:_pictureImageView]; self.tableView.tableHeaderView=_header; [self.viewaddSubview:_tableView]; } -(NSInteger)tableView:(UITableView*)tableViewnumberOfRowsInSection:(NSInteger)section { return20; } -(UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIndexPath*)indexPath { UITableViewCell*cell=[tableViewdequeueReusableCellWithIdentifier:@"cell"]; cell.textLabel.text=@"向下拉我"; returncell; } -(void)scrollViewDidScroll:(UIScrollView*)scrollView { /** *这里的偏移量是纵向从contentInset算起则一开始偏移就是0向下为负上为正下拉 */ //获取到tableView偏移量 CGFloatOffset_y=scrollView.contentOffset.y; //下拉纵向偏移量变小变成负的 if(Offset_y<0){ //拉伸后图片的高度 CGFloattotalOffset=pictureHeight-Offset_y; //图片放大比例 CGFloatscale=totalOffset/pictureHeight; CGFloatwidth=kScreenWidth; //拉伸后图片位置 _pictureImageView.frame=CGRectMake(-(width*scale-width)/2,Offset_y,width*scale,totalOffset); } } -(void)didReceiveMemoryWarning{ [superdidReceiveMemoryWarning]; //Disposeofanyresourcesthatcanberecreated. } @end
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。