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(-, , rect.size.width + * , 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! =
var onceLinearEquation : Math!
var pictures : [UIImage]!
var scrollView : UIScrollView! override func setup() { super.setup() onceLinearEquation = Math(pointA: CGPointMake(, -), pointB: CGPointMake(contentView!.width, - ))
pictures = [UIImage]()
pictures.append(UIImage(named: "")!)
pictures.append(UIImage(named: "")!)
pictures.append(UIImage(named: "")!)
pictures.append(UIImage(named: "")!)
pictures.append(UIImage(named: "")!) 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 ..< pictures.count { let showView = MoreInfoView(frame: CGRectMake(CGFloat(i) * width, , 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 ..< pictures.count { let showView = scrollView.viewWithTag(viewTag + i) as! MoreInfoView
showView.imageView.x = onceLinearEquation.k * (X - CGFloat(i) * width) + onceLinearEquation.b
}
}
}

最新文章

  1. React Native 之 TextInput使用
  2. ASP.NET 保存txt文件
  3. codevs 1215 迷宫
  4. ubuntu下命令行打开pdf/doc/ppt文件
  5. 命令模式坚决svn树冲突(local unversioned, incoming add upon update)
  6. htop
  7. 汉化Eclipse+配色方法(官方语言包)
  8. iOS webview加载html自定义选项框选词
  9. VS2013 支持python和nodejs
  10. URL和DNS解析
  11. css3太极图效果+自动旋转
  12. php访问类静态属性
  13. pugixml
  14. C#的dictionary使用总结
  15. SelectDirectory使用方法以及EnableTaskWindows
  16. 【Egret】使用Egret开发的HTML5项目,使用本地电脑作为服务器进行移动端调试流程
  17. Java socket详解(转)
  18. DevExpress ASP.NET Core Controls 2019发展蓝图(No.1)
  19. Java课程寒假之开发记账本软件(网页版)之三
  20. Lab 7-2

热门文章

  1. Servlet 3.0 新特性详解
  2. docker容器重启故障
  3. XML与HTML区别
  4. 【noip模拟赛2】牛跳
  5. getImplementationVersion-获取版本号
  6. jQuery的类数组对象结构(转)
  7. Hive项目开发环境搭建(Eclipse\MyEclipse + Maven)
  8. StringBuffer StringBuilder append
  9. 添加第一个控制器(Controllers)
  10. mysql where 条件中的字段有NULL值时的sql语句写法