2017-08-03 84 views
0

我试图创建的效果,当向下滚动/向下滑动,视图控制器顶部的UIView将收缩,底部将展开。如何将幻灯片动画添加到uiview高度常量?

这是我添加到上部视图中的轻扫手势的代码。

@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() 
      } 
     } 
}