2016-06-07 48 views
1

我在視圖控制器中創建了一個tableview。我成功隱藏並顯示錶格。但是,它在關閉並顯示錶格時沒有任何動畫。我希望它滑出或滑入。以下是我的代碼。通過單擊帶有動畫的按鈕關閉表格視圖(swift)

@IBAction func clickButtonAction(sender: AnyObject) { 
    UIView.animateWithDuration(10.0, delay: 0.0, options: UIViewAnimationOptions.CurveEaseOut, animations: {() -> Void in 


    }) { (finished:Bool) -> Void in 
     if(self.tableView.hidden == true){ 
      self.tableView?.hidden = false 
     } 
     else{ 
      self.tableView.hidden = true 
     } 
    } 

} 

回答

1

你不能動畫的UIViewhidden財產。您必須改變0.0和1.0之間的alpha屬性的動畫效果。您還在動畫的完成塊中完成您的工作。你應該在animations塊中完成它。我還清理了一些代碼。我假設tableView聲明爲UITableView?,但如果它是UITableViewUITableView,你可以訪問時省略?

@IBAction func clickButtonAction(sender: AnyObject) { 
    UIView.animateWithDuration(10.0, delay: 0.0, options: UIViewAnimationOptions.CurveEaseOut, animations: {() -> Void in 
     if self.tableView?.alpha == 1.0 { 
      self.tableView?.alpha = 0.0 
     } 
     else { 
      self.tableView?.alpha = 1.0 
     } 
    }, completion: { (finished:Bool) -> Void in 

    }) 
} 

注意:您可能不希望直接比較alpha == 1.0,因爲floating point math is hard。相反,我建議保留一個局部變量,使用它來跟蹤狀態,然後根據您的alpha關閉:

// Make sure this matches the initial hidden state of your table view. 
// So if your table view starts at alpha == 0.0, this should be true. 
private var tableViewHidden: Bool = false 

@IBAction func clickButtonAction(sender: AnyObject) { 
    tableViewHidden = !tableViewHidden 
    UIView.animateWithDuration(10.0, delay: 0.0, options: UIViewAnimationOptions.CurveEaseOut, animations: {() -> Void in 
     if tableViewHidden { 
      self.tableView?.alpha = 0.0 
     } 
     else { 
      self.tableView?.alpha = 1.0 
     } 
    }, completion: { (finished:Bool) -> Void in 

    }) 
} 
+0

我是編程新手。它有沒有任何這樣的例子? –

+0

使用示例代碼進行編輯。 –

+0

我可以讓它滑出或滑入,而不是淡出。我已經應用這個代碼,表格將淡出而不是滑入和滑出。 –

相關問題