按下/轻触按钮时,如何显示表格视图?

时间:2014-11-09 11:53:40

标签: ios objective-c xcode

我试图在用户点按按钮时显示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显示和消失。

但是,当我最初点击按钮时,表格视图会消失,如屏幕截图所示:

enter image description here

行的淡化表明它正在屏幕上移动,然后消失。

当我第二次重新点击UIButton时,它才会重新出现。

任何线索?

1 个答案:

答案 0 :(得分:0)

不要在表格视图上使用变换。这将使它看起来像在不同的位置,但它不会正确响应点击。

相反,使用较新的UIView基于块的动画方法并更改视图的中心。

代码可能如下所示(如果您不使用自动布局)

[UIView AnimateWithDuration: .2
  animations: ^
  {
    CGPoint center = self.markersTableView.center;
    center.y += 200;
    self.markersTableView.center = center;
  }
];

如果您正在使用自动布局,那将无法使用,您需要使用约束为视图的位置设置动画。

从内存中,这里是如何进行基于动画布局的动画的概述:您将在表视图上创建垂直位置约束,并将约束连接到视图控制器中的IBOutlet。在动画代码中,您可以更改约束的常量(垂直位置),然后在动画块中,向视图发送needsLayout消息。