3

我正在尝试将视图从位置 A 动画到 B 然后再返回。以前,我会执行以下操作来为 B 设置动画:

[UIView animateWithDuration:1 animations:^{
    self.myView.transform = CGAffineTransformMakeTranslation(100, 0);
}];

然后这个动画回到A:

[UIView animateWithDuration:1 animations:^{
    self.myView.transform = CGAffineTransformMakeTranslation(0, 0);
}];

所有这些都不需要知道原来的位置。

现在在自动布局中,我使用以下代码对位置 B 进行动画处理:

self.myLeadingConstraint.constant = 100;

[UIView animateWithDuration:1 animations:^{
    [self.view layoutIfNeeded];
}];

有没有办法在不需要创建另一个变量或在 IB 中查看初始值的情况下获取先前的常量值?有没有更好的方法来完成这一切?

提前致谢。

4

1 回答 1

5

不,这是最简单的方法。以下是为自动布局设置动画的选项:

  • 在一个块中调用 layoutIfNeeded。如果你只是翻译,只改变常数。
  • 动画层而不是视图。
  • 删除约束,使用自动调整大小的蒙版。
  • 使用容器视图并为该容器设置动画。
  • 使用不干扰的约束。
  • 在 viewDidLayoutSubviews 中设置框架。

你的意思是得到以前的常数值?那不是已经在 self.myLeadingConstraint.constant 上了吗?

于 2013-07-03T11:31:29.950 回答