UITableView的reloaddata动画(UITableview reloaddata wi

2019-07-18 22:18发布

具有被从阵列和一个下拉列表填充一个UITableView IAM。 如果我选择的下拉列表中的任何行的阵列将与新的价值观和tableview中应该重新加载插入。 如何动画与新数组内容的tableview? 提前致谢

像我的动画要显示的行一个接一个。 这个方法我试过

- (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];
 }

Answer 1:

要添加到正确的答案,如果你想运行你的所有部分UITableView你需要做到以下几点:

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) 

这将重新加载与动画中的表视图的一切。 像一个老板一样。



Answer 2:

使用这种方法,

[_tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];


Answer 3:

斯威夫特3

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)

我本就在斯威夫特



Answer 4:

你先告诉的tableView期待与更新beginUpdates 。 然后更新的相关章节(如果您的tableView只有一个部分则只是通过零供区段号)。 在这里你指定动画 - 你可以玩它,以获得您想要的效果。 之后,你叫endUpdates上的tableView。 对于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];


Answer 5:

在斯威夫特3,您可以在以下简单地添加extensionUITableView

extension UITableView {
    func reloadData(with animation: UITableView.RowAnimation) {
        reloadSections(IndexSet(integersIn: 0..<numberOfSections), with: animation)
    }
}


Answer 6:

您可以使用reloadSections:withRowAnimation:功能。 检查的UITableView类参考 。

检查此reloadData与动画这已经回答了你的问题。



Answer 7:

下面的方法是通过的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    };

希望这可以帮助!



Answer 8:

我曾尝试这样做,我的TableAnimated与流畅的动画效果

//将这个代码要刷新你的表视图

dispatch_async(dispatch_get_main_queue(), ^{
    [UIView transitionWithView:<"TableName"> 
                      duration:0.1f 
                       options:UIViewAnimationOptionTransitionFlipFromRight 
                    animations:^(void) {
                        [<"TableName"> reloadData];
                    } completion:NULL];        
});


Answer 9:

尝试而鉴于过渡变化,同时重新加载动画的UITableView

[UIView transitionWithView:_yourTableView 
                  duration:0.40f 
                   options:UIViewAnimationOptionTransitionCrossDissolve 
                animations:^(void) {[_yourTableView reloadData];}  
                completion:nil];


文章来源: UITableview reloaddata with animation