朋友圈 个人信息 界面 下拉 头部图片视图跟随缩放变化

第一次写文章,有不足之处请见谅,谢谢吐舌头

看到有个App个人信息界面或是朋友圈界面 往往顶部有一个背景图片,下滑的时候还能随滑动拉伸,效果如下图:


于是自己想了想,写了如下几句代码实现:

【这里就直接用代码了,代码中有解释,代码不难,相信有基础的都能看懂微笑】:

#import "ViewController.h"
#import "UIView+Category.h"

/** 顶部图片视图 初始化高度 即正常的高度 */
#define HeadImgInitHeight 200

@interface ViewController () <UIScrollViewDelegate>
/** 这样的页面 最外层显示的是一个ScrollView */
@property (nonatomic, strong) UIScrollView * scrollView;
/** 顶部的图片 */
@property (nonatomic, strong) UIImageView * headIMG;

@end

@implementation ViewController

#pragma mark - 懒加载
- (UIScrollView *)scrollView {
    if (!_scrollView) {
        /** 充满整个屏幕 */
        _scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
        /** 设置其内容高度 这里之所以+1,
         *  是因为 ScrollView的内容高度 小于等于 其自身高度的时候是不可以滑动的
         *  连弹簧效果也不会有,自然也就不可能有这个Demo所要达到的效果了
         */
        [_scrollView setContentSize:CGSizeMake(0, self.view.height+1)];
        _scrollView.delegate = self;
        //  添加图片
        [_scrollView addSubview:self.headIMG];
    }
    return _scrollView;
}

- (UIImageView *)headIMG {
    if (!_headIMG) {
        _headIMG = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.view.width, HeadImgInitHeight)];
        [_headIMG setImage:[UIImage imageNamed:@"yanfei"]];
        /** 设置图片的填充方式,根据实际需要设置,可以自己设置 尝试效果 */
        [_headIMG setContentMode:UIViewContentModeScaleAspectFill];
    }
    return _headIMG;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    /** 将ScrollView 加载显示 */
    [self.view addSubview:self.scrollView];
}

#pragma mark - UIScrollViewDelegate
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    float offset_Y = scrollView.contentOffset.y;
    if (offset_Y < 0) {
        //  当滑动到顶部 还在乡下滑动的时候
        /** 设置图片的 y 坐标为超出的y值
         *  并增加图片的高度
         *  填充掉下拉时弹簧效果多余的空白区域
         *  OK 这样就达到效果了
         */
        _headIMG.y = offset_Y;
        _headIMG.height = HeadImgInitHeight - offset_Y;
    }
}

@end


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值