自学Swift-斯坦福笔记整理(十二) Physics based Dynamic Animation
来源:互联网 发布:淘宝网舞蹈水袖 编辑:程序博客网 时间:2024/04/28 23:41
步骤
1:需要一个UIDynamicAnimator //这是驱动这些物理动画效果的本源
创建对象后添加UIDynamicBehaviors 重力等属性
UIDynamicItems将会受其他对象的重力,碰撞或者其他效果
CODE:
var animator = UIDynamicAnimator(referenceView: UIView)
创建行为:
let gravity = UIGravityBehavior()
animator.addBehavior(gravity)
collider = UICollisionBehavior()
animator.addBehavior(collider)
let item1: UIDynamicItem =
let item2: UIDynamicItem =
//item1添加了重力和碰撞 item2会受重力影响但是不受碰撞效果印象
gravity.addItem(item1)
collider.addItem(item1)
gravity.addItem(item2)
UIDynamicItem protocol
protocol UIDynamicItem {
var bounds: CGRect{get} //只读 动画器无法改变一个东西的大小
var center: CGPoint{get set} //位置
var transform: CGAffineTransform{get set} //用于旋转
}
func updateItemUsingCurrentState(item: UIDynamiaItem)
UIGravityBehavior //重力属性
var angle: CGFloat//角度
var magnitude: CGFloat.//加速度
//附属行为的动画效果
UIAttachmentBehavior
init(item: UIDynamicItem, attachedToAnchor: CGPoint)
init(item: UIDynamicItem, attachedToItem: UIDynamicItem)
init(item: UIDynamicItem, offsetFromCenter: CGpPoint,attachedToItemAnchor…)
var length: CGFloat
var anchorPoint: CGPoint
UICollisionBehavior
var collisionMode: UICollisionBehaviorMode
func addBoundaryWithIdentifier(identifier: NSCopping,forPath: UIBezierPath)
func removeBoundaryWithIdentifier(identifier: NSCopying)
var translatesReferenceBoundsIntoBoundary: Bool //为true动画对象的所有的外边框,就会变成一个边界
//当触碰到一个边界的时候,会得到这个消息
var collisionDelegate: UICollisionBehaviorDelegate
function collisionBehavior(behavior: UICollisionBehavior,began/endedContactForItem: UIDynamicItem,withBoundaryIdentifierNSCopying)
UISnapBehavior //当物体移动到某个point处,,发生碰撞 然后震荡
init(item: UIDynamicItem,snapToPoint: CGPoint)
var damping: CGFloat //控制震荡大小
UIPushBehavior //代表的意思是,把这个东西推向一个特定的角度或者是一个力度,有点类似于重力 与重力不同是Push行为可以是一个一次性的效果 也可以是一个持续性,连续的效果 不像重力可以加速
var mode: UIPushBehaviorMode
var pushDirection: CGVector
var angle: CGFloat
var magnitude: CGFloat
UIDynamicItemBehavior //动态对象行为
var allowsRotation: Bool
var friction: CGFloat
var elasticity: CGFloat
//线性速度
func linearVelocityForItem(UIDynamicItem) -> CGPoint
func addLinearVelocity(CGPoint,forItem:UIDynamicItem)
//角速度
func angularVelocityForItem(UIDynamicItem) -> CGFloat
//这个是所有行为的父类
UIDynamicBehavior
func addChildBehavior(UIDynamicBehavior)
所有的行为一次只能在一个动画器中
var dynamicAnimator: UIDynamicAnimator{gets] //可以询问一个碰撞行为谁正在进行动画效果
func willMoveToAnimator(UIDynamicAnimator)
UIDynamicBehavior中重要的属性 action
var action: (() -> Void)? //99.9999%的情况下,它通过一个闭包来设值
每次这个行为发生在其对象上的时候这段代码都会执行
Stasis
var delegate: UIDynamicAnimatorDelegate
func dynamicAnimatorDidPause(UIDynamicAnimator)
func dynamicAnimatorWillResume(UIDynamicAnimator))
0 0
- 自学Swift-斯坦福笔记整理(十二) Physics based Dynamic Animation
- 自学Swift-斯坦福笔记整理(五)
- 自学Swift-斯坦福笔记整理(六)
- 自学Swift-斯坦福笔记整理(七)
- 自学Swift-斯坦福笔记整理(八)
- 自学Swift-斯坦福笔记整理(第四天开始)
- 自学Swift-斯坦福笔记整理(十) TextFile table view Smashtag
- 自学Swift-斯坦福笔记整理(十一) Unwind segue alert
- 自学Swift-斯坦福笔记整理(十四) Core Location and MapKit
- 自学Swift-斯坦福笔记整理(十五) Modal Segues
- 自学Swift-斯坦福笔记整理(十七) Internationalization and Settings
- Physics-based Animation 相关
- Physics-based Animation
- Physics-based Animation 相关
- Physics-Based Animation learning notes
- Physics-based Animation 学习总结
- 自学Swift-斯坦福笔记整理(九) -- 滚动视图 闭包 多线程
- 自学Swift-斯坦福笔记整理(十三) Application Lifecycle and Core Motion
- iOS学习笔记: 初步探索KVC & KVO
- IBM 关于 Java 深入学习的技术资料
- Linux 下curl模拟Http 的get or post请求。
- 圆形的imageview,常用来显示头像
- MFC窗口风格 说明及在c#中的定义使用
- 自学Swift-斯坦福笔记整理(十二) Physics based Dynamic Animation
- ViewPager onPageChangeListener总结
- 最大子数组和
- Django URL传递参数的方法总结
- ScrollView嵌套ListView冲突
- 绿盟科技发布2015软件定义安全SDS白皮书
- HDU 3371 Connect the Cities
- LeetCode Majority Element
- IMX6Q(TQIMX6Q/TQE9)移植笔记