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

    效果为

  • 相关阅读:
    plaidctf2015 uncorrupt png
    Tsinghua dsa pa2
    课上实验-小软件破解
    HBase Block Cache(块缓存)
    JVM垃圾回收(二)- Minor GC vs Major GC vs Full GC
    JVM垃圾回收(一)- 什么是垃圾回收
    HBase Region 各个状态的转换
    HBase架构
    用GraphX分析伴生网络(二)
    用GraphX分析伴生网络(一)
  • 原文地址:https://www.cnblogs.com/Apologize/p/6306578.html
Copyright © 2011-2022 走看看