• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap