封装一个下拉一体效果

封装一个下拉一体效果_第1张图片
下拉一体‘.gif

下拉一体效果,是利用tableview的contentInset。把view添加到tableview上,根据scrollview的滚动实现即可。
所以可以封装一个一劳永逸。

#import 
#import 

@interface PullDownZoom : NSObject
-(instancetype)initWithTableview:(UIScrollView *)tableview headerH:(CGFloat)headerH header:(UIView *)header;

-(void)scrollZoom;
@end

传入tableview 与需要下拉的view,以及对应的高度,处理如下。

#import "PullDownZoom.h"
#import "UIView+Frame.h"
@interface PullDownZoom()
@property(nonatomic,strong)UIScrollView *tableview;
@property(nonatomic,assign)CGFloat headerH;
@property(nonatomic,strong)UIView *header;
@end
@implementation PullDownZoom
-(instancetype)initWithTableview:(UIScrollView *)tableview headerH:(CGFloat)headerH header:(UIView *)header
{
    
    self = [super init];
    if (self) {
        self.tableview = tableview;
        
      
        self.tableview.delegate = self;
        self.headerH = headerH;
        self.header = header;
        
        self.tableview.contentInset = UIEdgeInsetsMake(self.headerH, 0, 0, 0);
    }
    return self;
}
-(void)scrollZoom{
    [self scrollViewDidScroll:self.tableview];
}
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
    
    CGFloat y = scrollView.contentOffset.y;
    
    if ( y  < - self.headerH) {
        self.header.y  = y;
        self.header.height = -y;
        
    }
    
}
@end

所以只需要两步,即可。

1、第一步:引入,初始化

 self.zoom =  [[PullDownZoom alloc]initWithTableview:self.tableview headerH:300 header:self.header];

2、第二步:在scrollview滚动的地方设置

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

    [self.zoom scrollZoom];
    
}

demo地址:下拉一体

你可能感兴趣的:(封装一个下拉一体效果)