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

Posted

技术标签:

【中文标题】按下按钮时的 UIView 动画 - 第一次尝试时不可见【英文标题】:UIView animation on button press - not visible on first try 【发布时间】:2013-11-06 15:24:25 【问题描述】:

我在一个水平放置的 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;

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

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

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

【问题讨论】:

【参考方案1】:

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

在动画块中试试这个:

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

【讨论】:

抱歉,这是我帖子中的错字 - 它确实按照您的建议设置了第三张桌子的框架。

以上是关于按下按钮时的 UIView 动画 - 第一次尝试时不可见的主要内容,如果未能解决你的问题,请参考以下文章

当按下按钮但卡住时,尝试在UIView.animate中更改按钮标题和label.center.x.为什么? Swift 4 Xcode 9.4

uiview上的按钮翻转动画超出框架

UIView 动画在第一次尝试时没有动画

按下 UIBarButton 时,UIView 会快速恢复到原始帧

如何在快速按下按钮时添加独立的 UIView?

UIView 摇动动画