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 ;
        }
    }

    效果为

  • 相关阅读:
    python
    Yii框架的学习指南(策码秀才篇)1-1 如何认识Yii framework
    yii执行流程简单介绍
    html5页面编码如何确定
    防止表单重复提交的几种策略
    2维数组排序
    YII框架开发一个项目的通用目录结构:
    phpcms添加图片投票
    windows下面apache配置虚拟目录(测试使用,发布网站不建议目录访问)
    js获取浏览器的版本代码
  • 原文地址:https://www.cnblogs.com/Apologize/p/6306578.html
Copyright © 2011-2022 走看看