簡體   English   中英

“啟動”並刪除UIView

[英]“Launch” and drop a UIView

在此輸入圖像描述

上圖說明了我想要的東西:

  • 紅圈是UIView的起點
  • 我希望通過改變X位置向上啟動它(Y位置)
  • 我想讓它落入邊界內。

我嘗試了什么:

對於啟動,我可以使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM