2017-08-03 9 views
0

私は、スクロール/スワイプダウン時にビューコントローラの上部にあるUIViewが縮小し、下部が拡大するというエフェクトを作成しようとしています。uiview height定数にスライドアニメーションを追加するにはどうすればよいですか?

これは私が上のビューに追加したスワイプジェスチャーのコードです。

@IBAction func swipeUp(_ sender: UISwipeGestureRecognizer) { 
     if(upperView.isHidden == false){ 
      upperView.isHidden = true 
      self.heightUpperView.constant = 0 
      self.view.layoutIfNeeded() 
     } 
     else{ 
      self.heightUpperView.constant = 372 
      upperView.isHidden = false 
      self.view.layoutIfNeeded() 
     } 
    } 

アニメーションが不足しています。私は、スクロールアニメーションやスティッキーヘッダーアニメーションを模倣するための最良の方法は何でしょうか。

ありがとうございます。

答えて

1

self.view.layoutIfNeeded()UIView.animateWith...から呼び出さなければなりません。あなたのコードの例を以下に示します:

@IBAction func swipeUp(_ sender: UISwipeGestureRecognizer) 
{ 
    // Set new constants first 
    if(upperView.isHidden == false) 
    { 
      upperView.isHidden = true 
      self.heightUpperView.constant = 0 
    } 
    else 
    { 
      self.heightUpperView.constant = 372 
      upperView.isHidden = false 
    } 

    // This line will animate all your constraint changes 
    UIView.animate(withDuration: 0.3) 
    { 
      self.view.layoutIfNeeded() 
    } 
} 
1

swift 3.0

次のように試すことができます。

@IBAction func swipeUp(_ sender: UISwipeGestureRecognizer) { 
     if(upperView.isHidden == false){ 
      UIView.animate(withDuration: 0.8) { 
      self.upperView.isHidden = true 
      self.heightUpperView.constant = 0 
      self.view.layoutIfNeeded() 
      } 
     } 
     else{ 
      UIView.animate(withDuration: 0.8) { 
      self.upperView.isHidden = false 
      self.heightUpperView.constant = 372 
      self.view.layoutIfNeeded() 
      } 
     } 
} 
関連する問題