码迷,mamicode.com
首页 > 编程语言 > 详细

Swift - 用UIScrollView实现视差动画效果

时间:2016-08-18 23:27:38      阅读:330      评论:0      收藏:0      [点我收藏+]

标签:

Swift - 用UIScrollView实现视差动画效果

技术分享

 

效果

技术分享

 

源码

https://github.com/YouXianMing/Swift-Animations

//
//  MoreInfoView.swift
//  Swift-Animations
//
//  Created by YouXianMing on 16/8/18.
//  Copyright © 2016年 YouXianMing. All rights reserved.
//

import UIKit

class MoreInfoView: UIView {
    
    var imageView : UIImageView!
    
    override init(frame: CGRect) {
        
        super.init(frame : frame)
        
        layer.borderWidth   = 0.5
        layer.borderColor   = UIColor.blackColor().CGColor
        layer.masksToBounds = true
        
        /*
         *     --------------     *
         *-50->|-view-width-|<-50-*
         *     --------------     *
         */
        let rect              = frame
        imageView             = UIImageView(frame: CGRectMake(-50, 0, rect.size.width + 50 * 2, rect.size.height))
        imageView.contentMode = .ScaleAspectFill
        self.addSubview(imageView)
    }
    
    required init?(coder aDecoder: NSCoder) {
        
        fatalError("init(coder:) has not been implemented")
    }
}
//
//  ScrollImageViewController.swift
//  Swift-Animations
//
//  Created by YouXianMing on 16/8/18.
//  Copyright © 2016年 YouXianMing. All rights reserved.
//

import UIKit

class ScrollImageViewController: FullTitleVisualEffectViewController, UIScrollViewDelegate {

    let viewTag            : Int! = 1000
    var onceLinearEquation : Math!
    var pictures           : [UIImage]!
    var scrollView         : UIScrollView!
    
    override func setup() {
        
        super.setup()
        
        onceLinearEquation = Math(pointA: CGPointMake(0, -50), pointB: CGPointMake(contentView!.width, 270 - 80))
        pictures           = [UIImage]()
        pictures.append(UIImage(named: "1")!)
        pictures.append(UIImage(named: "2")!)
        pictures.append(UIImage(named: "3")!)
        pictures.append(UIImage(named: "4")!)
        pictures.append(UIImage(named: "5")!)
        
        scrollView                                = UIScrollView(frame: (contentView?.bounds)!)
        scrollView.delegate                       = self
        scrollView.pagingEnabled                  = true
        scrollView.backgroundColor                = UIColor.blackColor()
        scrollView.showsHorizontalScrollIndicator = false
        scrollView.bounces                        = false
        scrollView.contentSize                    = CGSizeMake(CGFloat(pictures.count) * width, height)
        contentView?.addSubview(scrollView)
        
        for i in 0 ..< pictures.count {
            
            let showView              = MoreInfoView(frame: CGRectMake(CGFloat(i) * width, 0, width, height))
            showView.imageView.image = pictures[i]
            showView.tag             = viewTag + i
            scrollView.addSubview(showView)
        }
    }
    
    func scrollViewDidScroll(scrollView: UIScrollView) {

        let X = scrollView.contentOffset.x
        
        for i in 0 ..< pictures.count {
            
            let showView = scrollView.viewWithTag(viewTag + i) as! MoreInfoView
            showView.imageView.x = onceLinearEquation.k * (X - CGFloat(i) * width) + onceLinearEquation.b
        }
    }
}

 

Swift - 用UIScrollView实现视差动画效果

标签:

原文地址:http://www.cnblogs.com/YouXianMing/p/5785631.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!