2012-04-02 15 views
3

Ich verwende den folgenden Code, um die Größenänderung von UITableView zu animieren, um für eine UIView mit zusätzlichen Steuerelementen bei dem UITableView.isEditing Platz zu machen.Animieren von UITableView Größenänderung

[UIView animateWithDuration:3 // 0.2 but slowed down to easily see difference 
         delay:0 
        options:UIViewAnimationOptionCurveEaseOut 
       animations:^{ 
        [self.selectControlsView setFrame:CGRectMake(0, self.tableView.frame.size.height-self.selectControlsView.frame.size.height, self.selectControlsView.frame.size.width, self.selectControlsView.frame.size.height)]; 
        [self.tableView setFrame:CGRectMake(0, 0, self.tableView.frame.size.width, self.tableView.frame.size.height-self.selectControlsView.frame.size.height)]; 
       } 
       completion:nil]; 

Dies funktioniert gut, außer es die UITableView scheint beseelt schneller als die UIView tut (obwohl ich die UIViews Frame vor dem UITableViews Rahmen justieren), während der Animation aus dem Hintergrund ein schwarzes Flimmern verursacht.

Gibt es eine Möglichkeit, die beiden Ansichten im Tandem zu animieren?

+0

Ich könnte zwei separate Animation Blöcke verwenden und haben eine leichte Verzögerung auf den Block für die UITableView Animation, aber das scheint wie ein bisschen ein Hack. Irgendwelche besseren Ideen sind willkommen. – steharro

Antwort

0

Das Problem wurde verursacht, weil der Controller eine Unterklasse von UITableViewController war. Ich untergliedere jetzt UIViewController und füge das UITableView als Unteransicht hinzu, die Animation zum Hinzufügen der neuen Ansicht und das Ändern der Größe von UITableView funktioniert jetzt wie erwartet.

Verwandte Themen