1

私は、画面の幅と高さであるドラッグ可能なビューを使用しており、パンのジェスチャーに応じて画面上を上下に移動できます。UIFieldBehaviour動的なビューを画面の上部、下部または中央にスナップする

パンジェスチャーが終了したら、パンが終了したときのビューの位置に応じて、画面の上下左右3つの位置にスナップします。私はUIFieldBehaviourのようなものが必要です。そこでは、力が正しい位置にアニメートしています。

一番上に表示されると、一番下の部分が30pxのように表示され、残りの部分は画面の下に表示されます。 したがって、私はビューのトップ30pxまでしか動かす必要はありません。

(悪い塗装のため申し訳ありません)フォースフィールドの挙動:

enter image description here

スナップ行動:
enter image description here

これを実現する方法についての任意のアイデア?

答えて

1

私は思ったよりも簡単でした。 私は新しいUIViewPropertyAnimatorを使用していますが、私はちょうどターゲットyの位置がUIScreenの高さと比較することで、上、下または中央にスナップするかどうかをチェックします。

 animator!.addAnimations({ 
      print(target.frame.origin.y) 

      if (target.frame.origin.y > UIScreen.main.bounds.height/2) { 
       if (target.frame.origin.y > (UIScreen.main.bounds.height - 50)) { 
        target.frame = CGRect(x: 0, y: UIScreen.main.bounds.height - 25, width: self.view.frame.width, height: self.view.frame.height) 
       } else { 
       target.frame = CGRect(x: 0, y: UIScreen.main.bounds.height - 95, width: self.view.frame.width, height: self.view.frame.height) 
       } 
      } else { 
       target.frame = CGRect(x: 0, y: 120, width: self.view.frame.width, height: self.view.frame.height) 
      } 
     }) 
     animator!.startAnimation() 
関連する問題