#import "ViewController.h"
#import "TableHeaderPic.h"
@interface ViewController ()<UITableViewDelegate,UITableViewDataSource>
@property (nonatomic,strong)TableHeaderPic *tableView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// 创建一个继承 TableHeaderPic的子类视图
self.tableView = [[TableHeaderPic alloc] initWithFrame:self.view.bounds];
_tableView.delegate = self;
_tableView.dataSource = self;
[self.view addSubview:_tableView];
// 创建一张图片,作为tableView底层视图,并进行跟随放大
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, _tableView.frame.size.width, 200)];
imageView.image = [UIImage imageNamed:[[NSBundle mainBundle] pathForResource:@"pic" ofType:@"jpg"]];
_tableView.bottomView = imageView;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return 5;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *identifier = @"UITableViewCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:(UITableViewCellStyleValue1) reuseIdentifier:identifier];
}
cell.textLabel.text = @"123";
return cell;
}
// 实现此效果,必须实现下面的方法
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
[self.tableView startDetection:scrollView];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
#import <UIKit/UIKit.h>
@interface TableHeaderPic : UITableView
@property (nonatomic,strong)UIView *bottomView;
- (void)startDetection:(UIScrollView *)scrollView;
@end
#import "TableHeaderPic.h"
#define KSetFrameY(A,B) CGRectMake(A.frame.origin.x,B,A.frame.size.width,A.frame.size.height)
@interface TableHeaderPic ()<UIScrollViewDelegate>
@property (nonatomic,assign)CGRect tempFrame;
@property (nonatomic,assign)CGPoint tempContentOffset;
@property (nonatomic,strong)UIView *headerView;
@end
@implementation TableHeaderPic
// 重写bottom设置方法
- (void)setBottomView:(UIView *)bottomView{
_bottomView = bottomView;
[self addSubview:_bottomView];
self.tempFrame = bottomView.bounds;
self.tableHeaderView = self.headerView;
}
// 初始化headerView
- (UIView *)headerView{
if (!_headerView) {
self.headerView = [[UIView alloc] initWithFrame:_tempFrame];
_headerView.backgroundColor = [UIColor clearColor];
}
return _headerView;
}
// 当视图滚动是改变底层视图的frame
- (void)startDetection:(UIScrollView *)scrollView{
if (scrollView.contentOffset.y > 0) {return;}
CGFloat value = ABS(scrollView.contentOffset.y);
CGFloat scale = (self.tempFrame.size.height + value) / self.tempFrame.size.height;
self.bottomView.transform = CGAffineTransformScale(CGAffineTransformIdentity, scale, scale);
self.bottomView.frame = KSetFrameY(self.bottomView, scrollView.contentOffset.y);
}
@end
iOS 下拉tableView实现图片的放大效果
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- - (void)viewDidLoad { [super viewDidLoad]; _imageview = [...
- 最近感觉UITableview头部带有图片,并且下拉时图片放大这种效果非常炫酷,所以动手实现了一下,效果如下图: ...
- 思路:如果将imageView作为headerView,将不能随意调整图片的大小,位置,我们不希望图片全部显示,但...