• Swift


    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
            }
        }
    }
  • 相关阅读:
    [转] 《大腕》——编程高手篇
    [转] 如何用VB.Net创建一个三层的数据库应用程序
    [转] 张孝祥的java试题
    [转] 很久以前的一个sql面试题及答案.
    [转] C#编程实践
    [转] html技巧
    [转] 揭开SVCHOST.exe进程之谜
    [转] c#.net常用函数和方法集
    [转] Visual Studio.Net 快捷键表
    [转] left join/right join/inner join操作演示
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/5785631.html
Copyright © 2020-2023  润新知