iOS一行代码实现TableView头部拉伸效果(封装<20行代码)

iOS一行代码实现TableView头部拉伸效果(封装<20行代码)_第1张图片
Qinz

    在实际开发中,会员中心的界面经常会涉及到头部视图拉伸的效果(有时商品详情界面也会涉及),下面提供的封装不超过20行代码,都可以看懂,方便大家再使用的时候明白其中的原理,好了!废话不多说~代码不多,喜欢的朋友可以自己封装一遍!同样喜欢的话就动动手指点个❤哦~


以下封装的代码总共不超过20行,下面详细介绍实现的原理:

TableHeaderViewZoom.h


#import 

#import

@interface TableHeaderViewZoom : NSObject

@property (nonatomic,retain) UITableView* tableView;

@property (nonatomic,retain) UIView* view;

@property (nonatomic, assign) CGFloat viewHeight;

//实现下面的方法

-(void)TableHeaderViewZoom:(UITableView*)tableView WithView:(UIView*)view AndViewHeight:(CGFloat)viewHeight;

- (void)scrollViewDidScroll:(UIScrollView*)scrollView;

@end

TableHeaderViewZoom.m


#import "TableHeaderViewZoom.h"

@implementation TableHeaderViewZoom

@synthesize tableView = _tableView;

@synthesize view = _view;

-(void)TableHeaderViewZoom:(UITableView *)tableView WithView:(UIView *)view AndViewHeight:(CGFloat)viewHeight{

_tableView = tableView;

_view = view;

_viewHeight = viewHeight;

//利用内嵌添加头部视图

self.view.frame = CGRectMake(0, -_viewHeight, [UIScreen mainScreen].bounds.size.width, _viewHeight);

//添加到TableView之上

[self.tableView addSubview:self.view];

//放到图层的最后

[self.tableView sendSubviewToBack:self.view];

//修改内嵌值

self.tableView.contentInset = UIEdgeInsetsMake(_viewHeight, 0, 0, 0);

}

- (void)scrollViewDidScroll:(UIScrollView*)scrollView

{

if (scrollView.contentOffset.y < -_viewHeight) {

//往上移动10个单位

//position 相当于UIView的center

self.view.layer.position = CGPointMake([UIScreen mainScreen].bounds.size.width / 2.0,  scrollView.contentOffset.y / 2.0);

//设置一个放大系数:(fabs是取绝对值)

CGFloat scale = fabs(scrollView.contentOffset.y) / _viewHeight;

//触发放大缩小

self.view.transform = CGAffineTransformMakeScale(scale, scale);

}else{

}

}

@end


用法:

- (void)viewDidLoad {

[super viewDidLoad];

//初始化一个头部视图的对象

self.headerView = [HomeHeaderView homeHeaderView];

//初始化一个拉伸对象

self.Zoom = [[TableHeaderViewZoom alloc]init];

/**

*  参数一:tableView对象

参数二:HeaderView对象

参数三: headerView的高度

*/

//此处调用该方法即可

[self.Zoom TableHeaderViewZoom:self.mainTableView WithView:self.headerView AndViewHeight:180.0f];

}

//实现该方法监听拉伸事件

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

{

[self.Zoom scrollViewDidScroll:scrollView];

}

我是Qinz,希望我的文章对你有帮助。

你可能感兴趣的:(iOS一行代码实现TableView头部拉伸效果(封装<20行代码))