2016-12-18 13 views
0

を作るためのtableViewを使用するには、Swift3.0スウィフト - ここで更新リスト

private let MAX_HEIGHT: CGFloat = 100.0 

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.spinner = UIActivityIndicatorView(frame: CGRect(x: 0, y: -MAX_HEIGHT, width: self.view.bounds.width, height: MAX_HEIGHT)) 
    self.spinner.activityIndicatorViewStyle = .whiteLarge 
    self.spinner.color = .blue 
    self.view.insertSubview(spinner, at: 0) 
} 

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    // #warning Incomplete implementation, return the number of rows 
    return 20 
} 

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "basicCell", for: indexPath) 
    cell.textLabel?.text = "The \(indexPath.row) Row" 

    return cell 
} 

とコードであり、ここで重要なコードです: 私はリストをドラッグすると、それはこの

override func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) { 
    if -scrollView.contentOffset.y >= MAX_HEIGHT + scrollView.contentInset.top { 
     UIView.animate(withDuration: 0.5, animations: { 
      scrollView.contentInset.top += MAX_HEIGHT 
     }) 
     self.update() 
    } 
} 

func update() { 
    self.spinner.startAnimating() 
    // I want to make a sleep for 2 seconds, But sleep() is not suit 
    UIView.animate(withDuration: 2.0, animations: { 
     self.view.alpha = 0.99 
    }, completion: { (_) -> Void in 
     self.view.alpha = 1.0 
     self.spinner.stopAnimating() 
     UIView.animate(withDuration: 0.5, animations: { 
      self.tableView.contentInset.top -= MAX_HEIGHT 
     }) 
    }) 
} 
を行います

The Main View

私が欲しいのアニメーションは、私は私のドラッグを終了したときに、リストはこの

0123のような更新のアニメーションを持つことになりますです

Updating

私がドラッグを終了すると、scrollview.contentInset.topは100.0に設定されます。もう少し長めにドラッグすると(125.0 ..)、リストにはドラッグした位置からゆっくりとスライドするようなアニメーションが表示されます1002000

結果はドラッグを終了するとリストが少しスライドします長くして100.0にスライドすると、100.0に直接スライドしませんでした。 リストがすばやく動いているようです。

+0

あなたはこの機能がすでに処理されることを知っています役立ちますUIRefreshControl

を使用してみてください/ uirefreshcontrol)? [この質問](http://stackoverflow.com/questions/24475792/how-to-use-pull-to-refresh-in-swift-2)を調べて、その使い方を知りたい場合があります。 –

+0

UIRefreshControlを使用することは有望な解決策に見えますが、カスタムアニメーションを追加したい場合、UIRefreshControlは大いに役立ちません。私はそのようなカスタムコントロールを書く必要があります – pluto

+0

今、アイデアは:カスタムUIRefreshControl(カスタムアニメーション)をどのように作成できるかを調べるべきです。 –

答えて

1

はたぶん、このチュートリアルでは、[UIRefreshControl](https://developer.apple.com/reference/uikitを使用しているときに https://www.appcoda.com/pull-to-refresh-uitableview-empty/

+0

さて、これは私をたくさん助けます。私は以前このコントロールを使用していない、それは有望な解決策だと思われる..UIRefreshControlはシステムの更新リストを作ることができるが、私はリフレッシュするときに動的な効果を持つ更新リストなどカスタム更新リストを作るために使用することはできませんそう、私も古い質問を解決したい。とにかくありがとう! – pluto

関連する問題