Swift - 用UIScrollView实现视差动画效果
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
}
}
}
Swift - 用UIScrollView实现视差动画效果的更多相关文章
- Swift - 多个mask的动画效果
Swift - 多个mask的动画效果 效果 源码 https://github.com/YouXianMing/Swift-Animations // // TranformFadeView.swi ...
- 【安卓高级】ViewPager视差动画效果
在安卓开发中,是否遇见过一些很酷的视差动画效果,当ViewPager滑动下一页的时候,页面内的各种元素也能跟随滑动做位移效果,整体看起来非常有活力. 关键的PageTransformer PageTr ...
- Android ViewPager+属性动画 实现炫酷视差动画效果
ViewPager有一个setPageTransform()方法可以实现很多酷炫的动画效果 先来个仿QQ的侧滑面板效果 vp.setPageTransformer(true, new PageTran ...
- Swift - 使用atlas图集实现动画效果(SpriteKit游戏开发)
我们通常继承SKSpriteNode来实现游戏中的元素,除了可以使用图片作为纹理皮肤外.我们还可以使用动画纹理集来实现动画播放. 动画纹理集的制作也很简单,首先要有一套动画序列图,然后把它们放到一个文 ...
- Swift 添加到TableView实现动画效果
let indexPath = NSIndexPath(forRow:0 ,inSection:0) self.tableView.insertRowsAtIndexPaths([indexPath] ...
- Swift - CALayer的contents属性动画
Swift - CALayer的contents属性动画 效果 源码 https://github.com/YouXianMing/Swift-Animations // // LiveImageVi ...
- [Swift通天遁地]九、拔剑吧-(14)创建更美观的景深视差滚动效果
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- Swift 带有动画效果的TabBarItem
额...貌似挺长时间没有总结新知识了,最近在看swift,之前swift刚出来的时候大体看了一遍,后来时间长了没看加之swift2.0做了比较大的调整,公司项目也不是用swift写的,也就没怎么看了, ...
- iOS开发——动画篇Swift篇&动画效果的实现
Swift - 动画效果的实现 在iOS中,实现动画有两种方法.一个是统一的animateWithDuration,另一个是组合出现的beginAnimations和commitAnimation ...
随机推荐
- Little-endian和Big-endian
谈到字节序的问题,必然牵涉到两大CPU派系.那就是Motorola的PowerPC系列CPU和Intel的x86系列CPU.PowerPC系列采用big endian方式存储数据,而x86系列则采用l ...
- csu 1930 roads(DFS)
Description Once upon a time there was a strange kingdom, the kingdom had n cities which were connec ...
- 使用prometheus抓取k8s的metrics作监控时,cAdvisor和kubelet配置有何差别?
按网上说法: 目前cAdvisor集成到了kubelet组件内,可以在kubernetes集群中每个启动了kubelet的节点使用cAdvisor提供的metrics接口获取该节点所有容器相关的性能指 ...
- 十个问题带你了解和掌握java HashMap
十个问题带你了解和掌握java HashMap 一.前言 本篇内容是源于 " 由阿里巴巴Java开发规约HashMap条目引发的故事",并在此基础上加了自己的对HashMap更多的 ...
- Ⅳ.Catalan数
Catalan数首先是由Euler在精确计算对凸n边形的不同的对角三角形剖分的个数问题时得到的,它经常出现在组合计数问题中. 问题的提出:在一个凸n边形中,通过不相交于n边形内部的对角线,把n ...
- 在mysql中使用group by和order by取每个分组中日期最大一行数据
转载自:https://blog.csdn.net/shiyong1949/article/details/78482737 在mysql中使用group by进行分组后取某一列的最大值,我们可以直接 ...
- Slickflow.NET 开源工作流引擎基础介绍(八) -- 自动化任务调度实现介绍
前言:审批流程中常见的都是人工类型任务,但是也会有一些自动化的任务需要定时触发.因此,引擎框架中需要解决掉两个问题:选择合适的任务调度框架,集成新的任务调度模块. 1. 任务调度框架选择 Hangfi ...
- authentication unavailable: no polkit agent available to authenticate action 'org.libvirt.unix.manage'的问题解决
这个主要是WebVirtMgr的安装导致出现的错误,解决方法如下: 1.增加libvirtd用户组 groupadd libvirtd 2.设置用户到组 sudo usermod -a -G libv ...
- 设置java.library.path的值(Mac/Linux/Windows)
说明:网上基本针对这个值的设置分为两面,Windows派和Linux派,Windows的不说,Linux下只会说设置LD_LIBRARY_PATH即可,但这种方式在Java 8是一个错误的设置,尤其是 ...
- match_parent和fill_parent的区别(转)
有网友表示对于很多工程中的MATCH_PARENT出现在layout中感到不明白,过去只有FILL_PARENT和WRAP_CONTENT那么match_parent到底是什么类型呢? 其实从Andr ...