ios 试图滚动的时候,顶部显示和隐藏动画效果

来源:互联网 发布:java参数的传递 编辑:程序博客网 时间:2024/06/06 08:27

@interface HeadrView : UIView

@property (nonatomic,strong) UIScrollView *scrollView;

@end


#import "HeadrView.h"

#import "Masonry.h"

@interface HeadrView ()<UIScrollViewDelegate>

{

    CGFloat topHeight;

    CGFloat bottomHeight;

    CGFloat sumHeight;

    UIView *topView;

    UIView *bottomView;

    CGFloat beginContentY;          //开始滑动的位置

}

@end

@implementation HeadrView

- (instancetype)initWithFrame:(CGRect)frame

{

    self = [superinitWithFrame:frame];

    if (self)

    {

        topHeight = 64;

        bottomHeight =170;

        sumHeight = -bottomHeight-topHeight;

        topView = [UIViewnew];

        topView.backgroundColor = [UIColorredColor];

        

        

        bottomView = [UIViewnew];

        bottomView.backgroundColor = [UIColorlightGrayColor];

        [self addSubview:topView];

        [self addSubview:bottomView];


        [topView mas_makeConstraints:^(MASConstraintMaker *make) {

            make.top.equalTo(self.mas_top);

            make.left.equalTo(self.mas_left);

            make.right.equalTo(self.mas_right);

            make.height.equalTo(@(64));

        }];

        [bottomViewmas_makeConstraints:^(MASConstraintMaker *make) {

            make.top.equalTo(topView.mas_bottom);

            make.left.equalTo(self.mas_left);

            make.right.equalTo(self.mas_right);

            make.height.equalTo(@(170));

        }];

        self.clipsToBounds =YES;

        [self.layersetMasksToBounds:YES];

    }

    return self;

}



- (void)willMoveToSuperview:(UIView *)newSuperview

{

    self.scrollView.contentInset =UIEdgeInsetsMake(bottomHeight+topHeight,0, 0,0);

    self.scrollView.delegate =self;

}


- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView

{

    beginContentY = scrollView.contentOffset.y;         //开始滑动的位置

}


- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inoutCGPoint *)targetContentOffset

{

    CGFloat endContentY = scrollView.contentOffset.y;

    if (endContentY-beginContentY >=0)

    {

        [UIViewanimateWithDuration:0.25animations:^{

            self.alpha =0;

            self.frame =CGRectMake(0,sumHeight, self.frame.size.width,self.frame.size.height);

            self.scrollView.contentInset =UIEdgeInsetsMake(0,0, 0, 0);

        } completion:^(BOOL finished) {

            

        }];

    }

    else

    {

        [UIViewanimateWithDuration:0.25animations:^{

            self.alpha =1;

            self.frame =CGRectMake(0,0, self.frame.size.width,self.frame.size.height);

            self.scrollView.contentInset =UIEdgeInsetsMake(bottomHeight+topHeight,0, 0,0);

        } completion:^(BOOL finished) {

            

        }];

    }


}

阅读全文
0 0