UICollectionView下拉使header放大模糊

模糊主要使用UIVisualEffectView,这只在ios8以后适用

//模糊的遮罩view
@property(nonatomic,strong) UIVisualEffectView *effectView;
@property(nonatomic,strong) CollectionviewLayout *layout;

CollectionviewLayout *layout = [[CollectionviewLayout alloc]init];
layout.itemSize = CGSizeMake(mScreenWidth, 40);
layout.headerReferenceSize = CGSizeMake(mScreenWidth, collectionViewHeaderHeight);
self.layout = layout;

遮罩view的设置

UIBlurEffect *blur = [UIBlurEffect effectWithStyle:(UIBlurEffectStyleLight)];
UIVisualEffectView *effectView = [[UIVisualEffectView alloc] initWithEffect:blur];
effectView.alpha = 0;
self.effectView = effectView;
[_collectionView addSubview:_effectView];

header是UIImageView,大小为layout.headerReferenceSize
模糊是在-(void)scrollViewDidScroll:(UIScrollView *)scrollView中写

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
    CGFloat offSetY = scrollView.contentOffset.y;
    CGFloat deltaY = fabs(offSetY);
    if (offSetY < 0) {
        CGSize headerSize = [self.layout headerReferenceSize];
        CGRect headRect = CGRectZero;
        headRect.size.height = headerSize.height + deltaY;
        headRect.size.width = headerSize.width + deltaY;
        headRect.origin.y = headRect.origin.y - deltaY;
        headRect.origin.x = headRect.origin.x - deltaY/2;
        //UIVisualEffectView的frame应与header的ImageView的frame相同
        //上述headRect也为header的imageView的frame
        self.effectView.frame = headRect;
        self.effectView.alpha = deltaY/collectionViewHeaderHeight*1.5 ;
    }
}

效果为

转载于:https://www.cnblogs.com/Apologize/p/6306578.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值