按下按钮上的UIView动画 - 第一次尝试时不可见

时间:2013-11-06 15:24:26

标签: ios objective-c uitableview uiview core-animation

我在水平放置的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,并在那里添加了所有UITableView。

1 个答案:

答案 0 :(得分:1)

您正在动画块中为第二个表设置两次帧,但您没有为第三个表设置帧。

在动画块中尝试此操作:

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