[英]“Launch” and drop a UIView
上图说明了我想要的东西:
我尝试了什么:
对于启动,我可以使用UIView.animate函数。 对于drop,我可以使用UIDynamicAnimator。 但是有一些问题:
- 在UIView.animate中,我不能'曲线'动画,只有一条直线。 我可以在这里使用这个答案画一条曲线: https : //stackoverflow.com/a/43813458/7715250
- 两个功能的组合都不起作用。 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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.