我在水平放置的 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”,以便执行代码。我还尝试过为每个动画使用单独的动画 block ,但结果是相同的。
我不知道出了什么问题。有什么建议吗?
编辑:我可能应该补充一点,我为此使用了 Storyboard,并且所有 UITableView 都添加到了那里。
最佳答案
您在动画 block 中为第二个表设置了两次框架,但没有为第三个表设置框架。
在动画 block 中试试这个:
self.UITableView1.frame = newUITableView1Frame;
self.UITableView2.frame = originalUITableView1Frame;
self.UITableView3.frame = originalUITableView2Frame;
关于ios - 按下按钮时的 UIView 动画 - 第一次尝试时不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19815970/