zoukankan      html  css  js  c++  java
  • UIScrollView视差模糊效果

    UIScrollView视差模糊效果

    效果

    源码

    https://github.com/YouXianMing/Animations

    //
    //  ScrollBlurImageViewController.m
    //  Animations
    //
    //  Created by YouXianMing on 15/11/25.
    //  Copyright © 2015年 YouXianMing. All rights reserved.
    //
    
    #import "ScrollBlurImageViewController.h"
    #import "MoreInfoView.h"
    #import "UIView+SetRect.h"
    #import "Math.h"
    #import "UIImage+ImageEffects.h"
    
    static int viewTag = 0x11;
    
    @interface ScrollBlurImageViewController () <UIScrollViewDelegate>
    
    @property (nonatomic, strong) NSArray       *picturesArray;
    @property (nonatomic, strong) UIScrollView  *scrollView;
    @property (nonatomic, strong) Math          *onceLinearEquation;
    
    @end
    
    @implementation ScrollBlurImageViewController
    
    - (void)viewDidLoad {
        
        [super viewDidLoad];
    }
    
    - (void)setup {
        
        [super setup];
        
        MATHPoint pointA = MATHPointMake(0, -50);
        MATHPoint pointB = MATHPointMake(self.view.width, self.view.width - 50);;
    
        self.onceLinearEquation = [Math mathOnceLinearEquationWithPointA:pointA PointB:pointB];
        
        // Init pictures data.
        self.picturesArray = @[[UIImage imageNamed:@"beauty"],
                               [[UIImage imageNamed:@"beauty"] blurImage],
                               [[UIImage imageNamed:@"beauty"] grayScale]];
        
        // Init scrollView.
        CGFloat height = self.view.height;
        CGFloat width  = self.view.width;
        
        _scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
        _scrollView.delegate                       = self;
        _scrollView.pagingEnabled                  = YES;
        _scrollView.backgroundColor                = [UIColor blackColor];
        _scrollView.showsHorizontalScrollIndicator = NO;
        _scrollView.bounces                        = NO;
        _scrollView.contentSize                    = CGSizeMake(self.picturesArray.count * width, height);
        [self.view addSubview:_scrollView];
        
        // Init moreInfoViews.
        for (int i = 0; i < self.picturesArray.count; i++) {
            
            MoreInfoView *show     = [[MoreInfoView alloc] initWithFrame:CGRectMake(i * width, 0, width, height)];
            show.imageView.image   = self.picturesArray[i];
            show.layer.borderWidth = 0.25f;
            show.layer.borderColor = [[UIColor grayColor] colorWithAlphaComponent:0.25f].CGColor;
            show.tag               = viewTag + i;
            
            [_scrollView addSubview:show];
        }
        
        [self bringTitleViewToFront];
    }
    
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
        
        CGFloat X = scrollView.contentOffset.x;
        
        for (int i = 0; i < self.picturesArray.count; i++) {
            
            MoreInfoView *show = [scrollView viewWithTag:viewTag + i];
            show.imageView.x   = _onceLinearEquation.k * (X - i * self.view.width) + _onceLinearEquation.b;
        }
    }
    
    @end

    细节

  • 相关阅读:
    Windows下的符号链接
    简单谈谈存储器的容量缩水问题
    配置CKEditor和CKFinder
    CKFinder的水印控件的问题
    关于 Visual Studio 默认创建的不是公共类
    Symbian 60 按键以及对应的键值(图)
    PLC中存储器的数据类型与寻址方式
    S7200 寻址
    电工识图笔记
    S7200型号串口通信参数设置
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/4998153.html
Copyright © 2011-2022 走看看