“启动”并删除UIView

在此处输入图像描述

上图说明了我想要的内容:

  • 红圈是UIView的起点
  • 我希望通过改变X位置向上启动它(Y位置)
  • 我想让它落入边界内。

我尝试了什么:

对于启动,我可以使用UIView.animate函数。 对于drop,我可以使用UIDynamicAnimator。 但是有一些问题:

– 在UIView.animate中我不能’曲线’动画,只有一条直线。 我可以在这里使用这个答案画一条曲线: https : //stackoverflow.com/a/43813458/7715250

– 两个function都没有用。 UIView.animate完成后,UIView直接向下移动。

UIDynamicAnimator的代码:

var animator: UIDynamicAnimator! //view did appear let view2 = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) view2.center = self.view.center view2.backgroundColor = .blue self.view.addSubview(view2) animator = UIDynamicAnimator(referenceView: self.view) let gravity = UIGravityBehavior(items: [view2]) animator.addBehavior(gravity) let collosion = UICollisionBehavior(items: [view2]) collosion.translatesReferenceBoundsIntoBoundary = true let dynamic = UIDynamicItemBehavior(items: [view2]) dynamic.elasticity = 0.7 animator.addBehavior(collosion) animator.addBehavior(dynamic) 

这将使UIView具有良好的反弹效果。 但是如何推出UIView? 如何更改X和Y位置并保持添加的行为?

我认为你需要的是UIPushBehavior。 添加这个额外的行为。

 let push = UIPushBehavior(items: [view2], mode: UIPushBehaviorMode.instantaneous) push.setAngle(CGFloat(-M_PI/2 - 0.1), magnitude: 8.0) // Adjust angle and magnitude animator.addBehavior(push)