2017-07-10 6 views
0

UItableViewがリロードされたときにフッタービューにテーブルビューをアニメーション表示する方法はありますか?UITableViewのスウィフト3でアニメーションされた下部をスクロールする方法

要素をtableViewに追加しようとしています。テーブルビューがリロードされるときにフッタービューにアニメーションが表示されるはずです。また、テーブルビューの内容が画面サイズを超えている場合は、フッタービューは画面の下部に貼り付ける必要があります。ここに私の試みは、次のとおりです。

tableView.beginUpdates() 
    self.familyAModelArray.append(self.childAModelArray) 
    tableView.endUpdates() 

注:ここで私はのUITableViewのコンテンツである配列にオブジェクトを追加し、テーブルビューをリロードします。前もって感謝します!

+0

テーブルビューにアイテムを追加しています。あなたはどんなタイプのアニメーションをしたいですか?新しい行の挿入をアニメートしますか? –

+0

@FangmingNing早く返信いただきありがとうございます。はい私は、新しい行の挿入をアニメーション化したいと思っていますし、フッターのビューは最後のセルの下にアニメーションで移動します。 – Shibili

答えて

0

私は、UITableViewが行を追加した後にリロードするときに、UIViewでアニメーションを使用してこれを解決しました。

UIView.transition(with: tableView, duration: 0.2, options: .curveEaseIn, animations: {self.tableView.reloadData()}, completion:{ (success) in 
      if success { 
       if self.familyAModelArray.count >= 3{ 
        self.scrollToBottom() 
       } 
      } 
     }) 

そして、私の配列の長さは、最上部にのUITableViewをスクロールして下部のフッタービュースティック3よりも大きい場合。

func scrollToBottom(){ 
    DispatchQueue.global(qos: .background).async { 
     let indexPath = IndexPath(row: self.familyAModelArray.count-1, section: 0) 
     self.tableView.scrollToRow(at: indexPath, at: .top, animated: true) 
    } 
} 

このソリューションは、私のテーブルビューを見栄えの良いものにしました。

1

挿入アクションをアニメートするには、insertRowsAtIndexPathsメソッドを行アニメーションで呼び出す必要があります。この

let indexes = [IndexPath(row: 0, section: 0), IndexPath(row: 1, section: 0)] 

よう

あなたの配列に表のセル要素を追加した後、あなたが表示される新しいセルのインデックスパスを計算し、それらの配列を作成しなければならない。そして、単純に次のメソッドを呼び出します挿入をアニメートする

tableView.beginUpdates() 
tableView.insertRowsAtIndexPaths(indexes, withRowAnimation: .Fade) 
tableView.endUpdates() 
1

フッタービューを画面の下部に貼り付ける場合は、フッタービューではありません。ビューコントローラのビューに固定されたカスタムUIViewにする必要があります。テーブルビューでreloadData()を呼び出すと、新しいカスタムビューでpresent/animate関数を呼び出して、下部に固定した&を画面上でアニメーション表示/非表示にすることができます。

関連する問題