按下按钮时的 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