I do not want animation in the begin updates, end updates block for uitableview?

前端 未结 6 1142
执念已碎
执念已碎 2020-12-22 22:43

I have a UITableView that is using a custom table cell and each cell has a UIWebView.

Because UIWebView took along time to load, i want to avoid reloading them at al

相关标签:
6条回答
  • 2020-12-22 22:45

    One more way to do it using blocks

    Obj-C

    [UIView performWithoutAnimation:^{
       [self.tableView beginUpdates];
       [self.tableView endUpdates];
    }];
    

    Swift

    UIView.performWithoutAnimation {
        tableView.beginUpdates()
        tableView.endUpdates()   
    }
    
    0 讨论(0)
  • 2020-12-22 22:49

    Swifties I had to do the following for this to work:

    // Sadly, this is not as simple as calling:
    //      UIView.setAnimationsEnabled(false)
    //      self.tableView.beginUpdates()
    //      self.tableView.endUpdates()
    //      UIView.setAnimationsEnabled(true)
    
    // We need to disable the animations.
    UIView.setAnimationsEnabled(false)
    CATransaction.begin()
    
    // And we also need to set the completion block,
    CATransaction.setCompletionBlock { () -> Void in
        // of the animation.
        UIView.setAnimationsEnabled(true)
    }
    
    // Call the stuff we need to.
    self.tableView.beginUpdates()
    self.tableView.endUpdates()
    
    // Commit the animation.
    CATransaction.commit()
    
    0 讨论(0)
  • 2020-12-22 22:57
    [UIView setAnimationsEnabled:NO];
    [tableView beginUpdates];
    [tableView endUpdates];
    [UIView setAnimationsEnabled:YES];
    
    0 讨论(0)
  • 2020-12-22 22:59

    I prefer to have a smooth transition:

    CGPoint offset = self.tableView.contentOffset;
    [UIView transitionWithView:self.tableView duration:0.5 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
            [self.tableView reloadData];
            self.tableView.contentOffset = offset;
        } completion:nil];
    

    give it a try.

    0 讨论(0)
  • 2020-12-22 23:06

    I wanted to updated the cell height for section 5 and following code worked for me:

    UiView.setAnimationsEnabled(False)
    self.productTableView.reloadSections(NSIndexSet(index: SectionType.ProductDescription.hashValue), withRowAnimation: UITableViewRowAnimation.None)
    self.productTableView.scrollToRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 5), atScrollPosition: UITableViewScrollPosition.Bottom, animated: false)
    UIView.setAnimationsEnabled(true)
    
    0 讨论(0)
  • 2020-12-22 23:11

    working on my project, but not a common solution.

    let loc = tableView.contentOffset
    UIView.performWithoutAnimation {
    
        tableView.reloadData()
    
        tableView.layoutIfNeeded()
        tableView.beginUpdates()
        tableView.endUpdates()
    
        tableView.layer.removeAllAnimations()
    }
    tableView.setContentOffset(loc, animated: true)//animation true may perform better
    
    0 讨论(0)
提交回复
热议问题