0

我在一个水平放置的 UIView 中有一组三个 UITableView,两个在屏幕上随时可见,另一个在屏幕外。我正在尝试对位置更改进行动画处理,在按下按钮时,最左侧的表格滑出屏幕向左,然后其他两个滑过以填充位置。

我遇到的问题是,如果我尝试一次为多个表格设置动画,则第一次按下按钮时不会发生任何事情。但在第二次按下时,一切正常。如果我尝试只为一张桌子制作动画,那么它在第一次印刷时就可以工作。我的按钮处理程序代码如下:

- (IBAction)buttonPressed:(id)sender{

    CGRect newUITableView1Frame = self.originalUITableView1Frame;
    newUITableView1Frame.origin.x = newUITableView1Frame.origin.x - newUITableView1Frame.size.width;    

    if(!makeSubButtonPressed){
        self.makeSubButtonPressed = YES;
        [self.makeSubButton setTitle:@"Choose Team Lineup" forState:UIControlStateNormal];

        [UIView animateWithDuration:0.5
                              delay:0.1
                            options:UIViewAnimationOptionCurveEaseOut
                         animations:^{
                             self.UITableView1.frame = newUITableView1Frame;
                             self.UITableView2.frame = originalUITableView1Frame;
                             self.UITableView3.frame = originalUITableView2Frame;
                         }
        completion:^(BOOL finished){NSLog(@"Animation Finished");}];
}

在 ViewDidLoad 方法中:

self.originalUITableView1Frame = self.UITableView1.frame;
self.originalUITableView2Frame = self.UITableView2.frame;

在第一次按下时,“动画完成”总是打印在控制台中,因此代码被执行。我还为每个动画尝试了单独的动画块,但结果是一样的。

我不知道出了什么问题。有什么建议么?

编辑:我可能应该补充一点,我正在为此使用 Storyboard,并且所有 UITableViews 都添加到那里。

4

1 回答 1

1

您在动画块中为第二个表格设置了两次框架,但您没有为第三个表格设置框架。

在动画块中试试这个:

self.UITableView1.frame = newUITableView1Frame;
self.UITableView2.frame = originalUITableView1Frame;
self.UITableView3.frame = originalUITableView2Frame;
于 2013-11-06T15:59:36.113 回答