我试图在用户点按按钮时显示UITableView,并在重新点按按钮时消失。
我实现了以下代码,但点击按钮时似乎没有任何内容。
- (IBAction)dropDown:(UIButton *)sender
{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.6];
CGAffineTransform transfrom = CGAffineTransformMakeTranslation(0, 200);
self.markersTableView.transform = transfrom;
self.markersTableView.alpha = self.markersTableView.alpha * (-1) + 1;
[UIView commitAnimations];
}
可能存在什么问题?
编辑:
通过在IBAction方法中的viewDidLoad()和self.markersTableView.hidden = YES;
中添加self.markersTableView.hidden = NO;
,我能够使UITableView显示和消失。
但是,当我最初点击按钮时,表格视图会消失,如屏幕截图所示:
行的淡化表明它正在屏幕上移动,然后消失。
当我第二次重新点击UIButton时,它才会重新出现。
任何线索?
答案 0 :(得分:0)
不要在表格视图上使用变换。这将使它看起来像在不同的位置,但它不会正确响应点击。
相反,使用较新的UIView基于块的动画方法并更改视图的中心。
代码可能如下所示(如果您不使用自动布局)
[UIView AnimateWithDuration: .2
animations: ^
{
CGPoint center = self.markersTableView.center;
center.y += 200;
self.markersTableView.center = center;
}
];
如果您正在使用自动布局,那将无法使用,您需要使用约束为视图的位置设置动画。
从内存中,这里是如何进行基于动画布局的动画的概述:您将在表视图上创建垂直位置约束,并将约束连接到视图控制器中的IBOutlet。在动画代码中,您可以更改约束的常量(垂直位置),然后在动画块中,向视图发送needsLayout消息。