iOS tableView实现下拉图片放大效果
程序员文章站
2023-12-14 14:02:28
本文实例为大家分享了ios实现下拉图片放大效果展示的具体代码,供大家参考,具体内容如下
#import "viewcontroller.h"
#define k...
本文实例为大家分享了ios实现下拉图片放大效果展示的具体代码,供大家参考,具体内容如下
#import "viewcontroller.h" #define kscreenbounds [uiscreen mainscreen].bounds #define kscreenwidth [uiscreen mainscreen].bounds.size.width #define kscreenheight [uiscreen mainscreen].bounds.size.height // 宏定义一个高度 #define pictureheight 200 @interface viewcontroller ()<uitableviewdatasource, uitableviewdelegate> @property (nonatomic, strong) uitableview *tableview; @property (nonatomic, strong) uiimageview *pictureimageview; @property (nonatomic, strong) uiview *header; @end @implementation viewcontroller - (void)viewdidload { [super viewdidload]; // do any additional setup after loading the view, typically from a nib. self.navigationitem.title = @"向下拉伸放大图片"; // 下面两个属性的设置是与translucent为no,坐标变换的效果一样 self.edgesforextendedlayout = uirectedgenone; self.automaticallyadjustsscrollviewinsets = no; [self createtableview]; } - (void)createtableview { self.tableview = [[uitableview alloc] initwithframe:cgrectmake(0, 0, kscreenwidth, kscreenheight - 64) style:uitableviewstyleplain]; _tableview.delegate = self; _tableview.datasource = self; [_tableview registerclass:[uitableviewcell class] forcellreuseidentifier:@"cell"]; // 添加头视图 在头视图上添加imageview self.header = [[uiview alloc] initwithframe:cgrectmake(0, 0, kscreenwidth, pictureheight)]; _pictureimageview = [[uiimageview alloc] initwithframe:_header.bounds]; _pictureimageview.image = [uiimage imagenamed:@"picture"]; /* 重要的属性设置 */ //这个属性的值决定了 当视图的几何形状变化时如何复用它的内容 这里用 uiviewcontentmodescaleaspectfill 意思是保持内容高宽比 缩放内容 超出视图的部分内容会被裁减 填充uiview _pictureimageview.contentmode = uiviewcontentmodescaleaspectfill; // 这个属性决定了子视图的显示范围 取值为yes时,剪裁超出父视图范围的子视图部分.这里就是裁剪了_pictureimageview超出_header范围的部分. _pictureimageview.clipstobounds = yes; [_header addsubview:_pictureimageview]; self.tableview.tableheaderview = _header; [self.view addsubview:_tableview]; } - (nsinteger)tableview:(uitableview *)tableview numberofrowsinsection:(nsinteger)section { return 20; } - (uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath { uitableviewcell *cell = [tableview dequeuereusablecellwithidentifier:@"cell"]; cell.textlabel.text = @"向下拉我"; return cell; } - (void)scrollviewdidscroll:(uiscrollview *)scrollview { /** * 这里的偏移量是纵向从contentinset算起 则一开始偏移就是0 向下为负 上为正 下拉 */ // 获取到tableview偏移量 cgfloat offset_y = scrollview.contentoffset.y; // 下拉 纵向偏移量变小 变成负的 if ( offset_y < 0) { // 拉伸后图片的高度 cgfloat totaloffset = pictureheight - offset_y; // 图片放大比例 cgfloat scale = totaloffset / pictureheight; cgfloat width = kscreenwidth; // 拉伸后图片位置 _pictureimageview.frame = cgrectmake(-(width * scale - width) / 2, offset_y, width * scale, totaloffset); } } - (void)didreceivememorywarning { [super didreceivememorywarning]; // dispose of any resources that can be recreated. } @end
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。