UIPushBehavior用来定义推动行为,可以给物理元素一个推力。UIDynamicItemBehavior用来定义物理元素本身的性质,例如摩擦力,质量等。下面我们会逐一讨论这些要素。 UIPushBehavior用来仿真推动行为,其可以为物理元素提供一个推力。 UIPushBehavior的模式有两种,分别可以添加瞬时推力与持续推力。 extension UIPushBehavior { // 模式 @available(iOS 7.0, *) public enum Mode : Int, @unchecked : UIDynamicBehavior { // 初始化方法 public init(items: [any UIDynamicItem], mode: UIPushBehavior.Mode
UIDynamicBehavior有: UIGravityBehavior 重力行为 UICollisionBehavior 碰撞行为 UIAttachmentBehavior 附着行为 UIPushBehavior 附着行为.gif 4.UIPushBehavior(推动行为) 推动行为的mode有连个值,一个是持续的推力,一个是初始推力。 - (void)animateTest { // 推动行为 UIPushBehavior *pushBehavior = [[UIPushBehavior alloc] initWithItems itemBehavior.allowsRotation = YES; //允许旋转 [_animator addBehavior:itemBehavior]; // 推动行为 UIPushBehavior *pushBehavior = [[UIPushBehavior alloc] initWithItems:@[_someView] mode:UIPushBehaviorModeInstantaneous
private var pushBehavior: UIPushBehavior! private var itemBehaviod: UIDynamicItemBehavior! UIPushBehavior 接下来,我们需要在停止拖动时分离视图,并为其提供动力,以便在运动中释放视图时可以继续其轨迹。 将使用UIPushBehavior完成此操作。 首先,需要两个常量。 if magnitude > ThrowingThreshold { // 2 let pushBehavior = UIPushBehavior
private var pushBehavior: UIPushBehavior! private var itemBehavior: UIDynamicItemBehavior! 但是很明显,我们一放开拖动,imageView马上回到原始位置,显然我们更希望手拖动后,存在惯性,还可以移动一段距离,为了解决这个问题,继续下面的学习 三、UIPushBehavior 在停止拖动时分离视图 velocity.x) + (velocity.y * velocity.y)) if magnitude > ThrowingThreshold { // 2 let pushBehavior = UIPushBehavior
UIDynamicBehavior:仿真行为,是动力学行为的父类,基本的动力学行为类UIGravityBehavior、UICollisionBehavior、UIAttachmentBehavior、UISnapBehavior、UIPushBehavior : UIGravityBehavior:重力行为 UICollisionBehavior:碰撞行为 UISnapBehavior:甩行为 UIAttachmentBehavior:附着行为 UIPushBehavior 子视图为基准的坐标转换为以父视图为基准的视图坐标方法 ---- UIPushBehavior(推行为) 注意要进行懒加载,多次添加会导致无效 1.获取该行为作用的动力项 @property
初始化的时候设定一下 UISnapBehavior 的 initWithItem:snapToPoint: 就行,因为 API 非常简单,视觉效果也很棒,估计它是今后非游戏 app 里会被最常用的效果之一了; UIPushBehavior
物理仿真行为 UIDynamic提供了以下几种物理仿真行为 UIGravityBehavior:重力行为 UICollisionBehavior:碰撞行为 UISnapBehavior:捕捉行为 UIPushBehavior