Iamには、配列とドロップダウンリストから生成されるUItableviewがあります。ドロップダウンリストの行を選択すると、配列に新しい値が挿入され、tableviewがリロードされます。新しい配列の内容でテーブルビューをアニメーション化する方法は?前もって感謝します
私のようなアニメーションは1行ずつ見せたいです。私はこの方法を試しました
- (void)reloadRowsAtIndexPaths:(NSArray )indexPaths withRowAnimation:(UITableViewRowAnimation)animation {
NSIndexPath rowToReload = [NSIndexPath indexPathForRow:[names count] inSection:0];
NSArray* rowsToReload = [NSArray arrayWithObjects:rowToReload, nil];
[tableDetails reloadRowsAtIndexPaths:rowsToReload withRowAnimation:UITableViewRowAnimationNone];
}
正解に追加するには、UITableView
の-allセクションをリロードする場合、次の手順を実行する必要があります。
ObjC
NSRange range = NSMakeRange(0, [self numberOfSectionsInTableView:self.tableView]);
NSIndexSet *sections = [NSIndexSet indexSetWithIndexesInRange:range];
[self.tableView reloadSections:sections withRowAnimation:UITableViewRowAnimationAutomatic];
スイフト
let range = NSMakeRange(0, self.tableView.numberOfSections)
let sections = NSIndexSet(indexesIn: range)
self.tableView.reloadSections(sections as IndexSet, with: .automatic)
これにより、テーブルビューのすべてがアニメーションで再ロードされます。偉ぶって。
この方法を使用して、
[_tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];
Swift
UIView.transition(with: myTableView, duration: 1.0, options: .transitionCrossDissolve, animations: {self.myTableView.reloadData()}, completion: nil)
スイフト2
UIView.transitionWithView(myTableView, duration: 1.0, options: .TransitionCrossDissolve, animations: {self.myTableView.reloadData()}, completion: nil)
私はこれでSwiftに行きました
まず、beginUpdates
を使用して更新を予期するようにtableViewに指示します。次に、関連するセクションを更新します(tableViewにセクションが1つしかない場合は、セクション番号にゼロを渡すだけです)。ここでアニメーションを指定します-好きな効果を得るためにそれをいじることができます。その後、tableViewでendUpdates
を呼び出します。 UITableViewRowAnimationのtypedefは次を指定します。
typedef enum {
UITableViewRowAnimationFade,
UITableViewRowAnimationRight,
UITableViewRowAnimationLeft,
UITableViewRowAnimationTop,
UITableViewRowAnimationBottom,
UITableViewRowAnimationNone,
UITableViewRowAnimationMiddle,
UITableViewRowAnimationAutomatic = 100
} UITableViewRowAnimation;
あなたが欲しいものを見るために遊んでください。 UITableViewRowAnimationNone
を選択しても、ニース効果が得られる場合があります。以下の表更新コード:
[self.tableView beginUpdates];
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];
Swift 3では、次のextension
をUITableView
に追加するだけです。
extension UITableView {
func reloadData(with animation: UITableView.RowAnimation) {
reloadSections(IndexSet(integersIn: 0..<numberOfSections), with: animation)
}
}
reloadSections:withRowAnimation:
関数を使用できます。 ITableView Class Reference を確認してください。
これを確認してください reloadData with Animation すでにあなたの質問に答えています。
以下のメソッドは、アニメーションのtableViewでサポートされています。
- (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation NS_AVAILABLE_IOS(3_0);
使用法 :
//Reload tableView with animation
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationRight];
利用可能なアニメーションの種類は次のとおりです。
typedef NS_ENUM(NSInteger, UITableViewRowAnimation) {
UITableViewRowAnimationFade,
UITableViewRowAnimationRight, // slide in from right (or out to right)
UITableViewRowAnimationLeft,
UITableViewRowAnimationTop,
UITableViewRowAnimationBottom,
UITableViewRowAnimationNone, // available in iOS 3.0
UITableViewRowAnimationMiddle, // available in iOS 3.2. attempts to keep cell centered in the space it will/did occupy
UITableViewRowAnimationAutomatic = 100 // available in iOS 5.0. chooses an appropriate animation style for you };
これが役立つことを願っています!
これを試しましたが、Table
はAnimated
です
//テーブルビューをリロードする場所にこのコードを配置します
dispatch_async(dispatch_get_main_queue(), ^{
[UIView transitionWithView:<"TableName">
duration:0.1f
options:UIViewAnimationOptionTransitionFlipFromRight
animations:^(void) {
[<"TableName"> reloadData];
} completion:NULL];
});
UITableViewの再読み込み中にビューの遷移を変更しながらアニメートしてみてください
[UIView transitionWithView:_yourTableView
duration:0.40f
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^(void) {[_yourTableView reloadData];}
completion:nil];