scrollview下拉放大效果,继承viewcontrolle

2019-06-12  本文已影响0人  与世倾听X游定终生

自己为了方便需要下拉放大的控制器封装的,继承即可,比较方便

头文件(.h文件)

#import "BaseViewController.h"

@interfaceBaseHeaderZoomController :BaseViewController

@property (nonatomic, strong) UITableView *tableView;

/** 设置头部View高度 */

@property (nonatomic, assign) CGFloat headerZoomViewH;

/** 设置背景图 */

@property(nonatomic,strong)UIImage*headerBackgroundImage;

@end

.m文件

#import "BaseHeaderZoomController.h"

#import "TableHeaderZoomView.h"

@interface BaseHeaderZoomController ()

@property(nonatomic,strong)TableHeaderZoomView*tableHeaderZoomView;

@end

@implementationBaseHeaderZoomController

- (void)viewDidLoad {

    [super viewDidLoad];

    [self.viewaddSubview:self.tableView];

    // Do any additional setup after loading the view, typically from a nib.

}

#pragma mark -- UIScrollViewDelegate

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

    CGFloatoffsetY = scrollView.contentOffset.y;

    if(offsetY <= -self.headerZoomViewH) {

        CGRectframe =self.tableHeaderZoomView.frame;

        //改变HeadImageView的frame

        //上下放大

        frame.origin.y= offsetY;

        frame.size.height= -offsetY;

        //左右放大

        frame.origin.x= (offsetY *SCREEN_WIDTH/self.headerZoomViewH+SCREEN_WIDTH) /2;

        frame.size.width= -offsetY *SCREEN_WIDTH/self.headerZoomViewH;

        //改变头部视图的frame

        self.tableHeaderZoomView.frame= frame;

    }

    if(offsetY < -50) {

        // TODO:下拉刷新

    }

    CGFloatcolorChangeContentOffset =100-self.headerZoomViewH;

    if(offsetY > colorChangeContentOffset) {

        doublealpha = (offsetY-colorChangeContentOffset)/64.0;

        if(alpha <0.05) {

            alpha =0;

        }

        if(alpha >0.95) {

            alpha =1;

        }

        self.topbarview.backgroundColor= [UIColorcolorWithWhite:1.0alpha:alpha];

    }else{

        self.topbarview.backgroundColor = [UIColor clearColor];

    }

}

#pragma mark - set

- (void)setHeaderZoomViewH:(CGFloat)headerZoomViewH {

    _headerZoomViewH= headerZoomViewH;

    [self.tableView addSubview:self.tableHeaderZoomView];

    //设置属性

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

    [self.tableView setContentOffset:CGPointMake(0, -self.headerZoomViewH)];

}

- (void)setHeaderBackgroundImage:(UIImage*)headerBackgroundImage {

    _headerBackgroundImage= headerBackgroundImage;

    self.tableHeaderZoomView.headerBackgroundImage = headerBackgroundImage;

}

#pragma mark - get

- (UITableView*)tableView {

    if(!_tableView) {

        _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT) style:UITableViewStyleGrouped];

        _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

        _tableView.estimatedRowHeight = 0;

        _tableView.estimatedSectionFooterHeight = 0;

        _tableView.estimatedSectionHeaderHeight = 0;

    }

    return _tableView;

}

- (TableHeaderZoomView*)tableHeaderZoomView {

    if (!_tableHeaderZoomView) {

        _tableHeaderZoomView = [[TableHeaderZoomView alloc] initWithFrame:CGRectMake(0, - self.headerZoomViewH, SCREEN_WIDTH, self.headerZoomViewH)];

    }

    return _tableHeaderZoomView;

}

@end

tableHeaderZoomView文件里没什么内容(也顺便贴上)

@interfaceTableHeaderZoomView :UIView

@property(nonatomic,strong)UIImage*headerBackgroundImage;

@end

@interface TableHeaderZoomView()

@property(nonatomic,strong)UIImageView*backgroundImageV;

@end

@implementationTableHeaderZoomView

- (instancetype)initWithFrame:(CGRect)frame {

    if(self== [superinitWithFrame:frame]) {

        [self setupSubviews];

    }

    return self;

}

- (void)setupSubviews {

    [self addSubview:self.backgroundImageV];

    [self.backgroundImageV mas_makeConstraints:^(MASConstraintMaker *make) {

        make.edges.mas_equalTo(self);

    }];

}

#pragma mark - set

- (void)setHeaderBackgroundImage:(UIImage*)headerBackgroundImage {

    _headerBackgroundImage= headerBackgroundImage;

    self.backgroundImageV.image= headerBackgroundImage;

}

#pragma mark - get

-(UIImageView*)backgroundImageV {

    if (!_backgroundImageV) {

        _backgroundImageV = [UIImageView new];

        _backgroundImageV.contentMode = UIViewContentModeScaleAspectFill;

        _backgroundImageV.image = [UIImage imageNamed:@"wallet_headerbg"];

    }

    return _backgroundImageV;

}

@end

上一篇下一篇

猜你喜欢

热点阅读