博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS开发-UITableView顶部图片下拉放大
阅读量:5754 次
发布时间:2019-06-18

本文共 2773 字,大约阅读时间需要 9 分钟。

关于顶部图片下拉放大,在用户展示的个人中心显示用户个人头像信息,设置UITableView的headerView实现,UITableView继承自UIScrollView,同样的设置UIScrollView的顶部图片也可以实现同样的效果,简单看一下实现的效果:

控制器中设置需要的属性变量:

1
2
3
4
@property  (strong,nonatomic)  UITableView  *tableView;
@property  (strong,nonatomic)  NSArray      *data;
@property   (strong,nonatomic) UIView       *tableHeaderView;
@property  (strong,nonatomic)  UIImageView  *imageView;

初始化属性:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
-(UITableView *)tableView{
    
if 
(!_tableView) {
        
_tableView=[[UITableView alloc]initWithFrame:CGRectMake(0, 0,SCREENWIDTH, SCREENHEIGHT)];
        
_tableView.
delegate
=self;
        
_tableView.dataSource=self;
        
_tableView.showsVerticalScrollIndicator=NO;
         
_tableView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
        
[_tableView registerClass:[UITableViewCell 
class
] forCellReuseIdentifier:CellIdetifier];
    
}
    
return 
_tableView;
}
 
-(UIView *)tableHeaderView{
    
if 
(!_tableHeaderView) {
        
_tableHeaderView=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0,SCREENWIDTH, 100)];
    
}
    
return 
_tableHeaderView;
}
 
-(UIImageView *)imageView{
    
if 
(!_imageView) {
        
_imageView=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, SCREENWIDTH, 100)];
        
_imageView.autoresizingMask=UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
        
_imageView.clipsToBounds=YES;
        
_imageView.contentMode=UIViewContentModeScaleAspectFill;
    
}
    
return 
_imageView;
}

UITableViewDelegate实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    
return 
1;
}
 
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    
return 
[self.data count];
}
 
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    
UITableViewCell  *cell=[tableView dequeueReusableCellWithIdentifier:CellIdetifier];
    
[cell.textLabel setText:self.data[indexPath.row]];
    
return 
cell;
}

 ViewDidLoad中初始化imageView:

1
2
3
4
5
6
self.data=@[
@"FlyElephant"
,
@"博客园"
,
@"UITableView图片放大"
,
@"http://www.cnblogs.com/xiaofeixiang/"
];
self.imageView.image=[UIImage imageNamed:
@"Girl"
];
self.imageView.contentMode=UIViewContentModeScaleAspectFill;
[self.tableHeaderView addSubview:self.imageView];
self.tableView.tableHeaderView=self.tableHeaderView;
[self.view addSubview:self.tableView];

在UITableViewView向下拉动的过程中,改变imageView的位置:

1
2
3
4
5
6
7
8
9
10
-(
void
)scrollViewDidScroll:(UIScrollView *)scrollView{
    
CGPoint offset = scrollView.contentOffset;
    
if 
(offset.y < 0) {
        
CGRect rect =self.tableHeaderView.frame;
        
rect.origin.y = offset.y;
        
rect.size.height =CGRectGetHeight(rect)-offset.y;
        
self.imageView.frame = rect;
        
self.tableHeaderView.clipsToBounds=NO;
    
}
}

 实现起来比较简单,希望对有需要的人有所帮助~

本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/5129073.html,如需转载请自行联系原作者

你可能感兴趣的文章
Python中的画图初体验
查看>>
Java程序员的日常 —— 响应式导航Demo
查看>>
objective-c内存管理基础
查看>>
sap关于价值串的说法(转载)
查看>>
采购申请转采购订单错误:在语言EN中没有维护短文本(请重维护物料460300080)
查看>>
Migration to S/4HANA
查看>>
SAP WM LPK1 不能把 cross-material control cycles定义成release order parts
查看>>
HTML5 & CSS3初学者指南(3) – HTML5新特性
查看>>
sed 对目录进行操作
查看>>
表格基础操作
查看>>
求空间一点到另外一点(如原点)的距离
查看>>
gitolite push fail solutions
查看>>
WIFI电源管理
查看>>
HDU4786:Fibonacci Tree(并查集)
查看>>
移动端适配(1)——viewport设置与初始化css
查看>>
阿里云PHP Redis代码示例
查看>>
php生成随机数
查看>>
2017-02-20
查看>>
win7与win7之间无法访问共享文件的问题解决(转)
查看>>
PS是LINUX下最常用的也是非常强大的进程查看命令
查看>>