zoukankan      html  css  js  c++  java
  • 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 ;
        }
    }

    效果为

  • 相关阅读:
    二、JVM内存模型
    一、计算机内存与JVM内存简析
    Centos7编译openjdk7
    linux查看CPU内核信息
    HashMap源码解析
    windows下安装MongoDB要注意的问题
    Javascript理解this对象
    关于javascript闭包中的this对象
    mac系统 IDEA+JFinal+Tomcat+Maven搭建
    Mac下python3配置Sklearn
  • 原文地址:https://www.cnblogs.com/Apologize/p/6306578.html
Copyright © 2011-2022 走看看