2013-02-06 15 views
11

[table beginUpdates]/[table endUpdates] animasyonlarının süresini değiştirmek için bir yol var mı?UITableView animasyonunun süresini değiştirme (tabloya yeni başlayanlar ekleme/silme beginUpdates)

Seçenek 1:

[UIView animateWithDuration:5.0 delay:0.0 options:(UIViewAnimationOptionCurveEaseInOut|UIViewAnimationOptionOverrideInheritedDuration) animations:^{ 

    [self.tableView beginUpdates]; 

    [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithArray:indexPaths] withRowAnimation:UITableViewRowAnimationTop]; 

    [self.tableView endUpdates]; 


} completion:^(BOOL finished) { 
}]; 

Seçenek 2:

[CATransaction begin]; 

[CATransaction setCompletionBlock:^{ 
    NSLog(@"I actually get called!"); 
}]; 

[CATransaction setAnimationDuration:5.0]; //but I don't work 

[self.tableView beginUpdates]; 

[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithArray:indexPaths] withRowAnimation:UITableViewRowAnimationTop]; 

[self.tableView endUpdates]; 

[CATransaction commit]; 
+0

Kontrol dışarı bu soruyu: http://stackoverflow.com/questions/3832474/uitableview-row-animation-duration-and-completion-callback/13041475#13041475 Bu İstediğinizi elde etmek CATransaction kullanır: - –

+0

Bu soruyu gördüm. Çalışırdı, ama benim problemim özel olarak süreye ihtiyacım var, işe yaramaz. I.e., bu sorudaki 2. seçenekte, [CATransaction setAnimationDuration: 5.0], 'çalışmak ve buna gerek yok. –

+0

@TomRedman bu sorun için hiç iyi bir çözüm bulmadı mı? Ben yukarıda Ben tarafından bağlantılı bir soru var görüyorum, şimdi var bir iOS 7 çalışır, ama değil 6 ... –

cevap

11

neden yapmıyorsun

Bu

hiçbir şans ile denedim budur UIView animasyonunu deneyin.

[UIView animateWithDuration:2 delay:0.2 options:UIViewAnimationOptionCurveEaseInEaseOut animations:^{ 
    [self.tableView beginUpdates]; 
    [self.tableView endUpdates]; 
} completion:^(BOOL finished) { 
    // code 
}]; 
+1

iOS 7 ve iOS 8'de benim için çalışıyor! –

+0

Bu bir cevap! IOS 9'da da çalışır. – silvansky

+0

ios 9'da çalışır ancak diğer animasyonlar garip davranır – Miniroo

1

@Gautam Jain 'nin çözümü harikadır. Ancak, en azından iOS 9'da bir sorun var: tamamlama bloğu bir seferde gerçekleştirilecek ancak animasyon tamamlanmadığında uygulanmayacak.

Genelde aşağıda, biraz daha fazla kodla, ancak daha iyi çalışırım.

[UIView beginAnimations:@“animation” context:nil]; 
[UIView setAnimationDuration:0.25]; 
[CATransaction begin]; 
[CATransaction setCompletionBlock:^{ 
    // completion block 
}]; 

[self.tableView beginUpdates]; 
// updates 
[self.tableView endUpdates]; 

[CATransaction commit]; 
[UIView commitAnimations]; 
İlgili konular