美文网首页
scrollview下拉放大效果,继承viewcontrolle

scrollview下拉放大效果,继承viewcontrolle

作者: 与世倾听X游定终生 | 来源:发表于2019-06-12 14:22 被阅读0次

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

    头文件(.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

    相关文章

      网友评论

          本文标题:scrollview下拉放大效果,继承viewcontrolle

          本文链接:https://www.haomeiwen.com/subject/ndclfctx.html