UIView动画时不动

时间:2014-04-12 04:15:36

标签: ios objective-c animation uiview

我试图将简单的uiview移动30点。然而,无论我做什么,我都无法移动它。

我正在开发iOS 7.1

现在,我终于发现我有自动布局,但是我对此视图没有任何约束。这是从对象库中简单拖动并放置在视图控制器中。我尝试过各种各样的东西来让它移动。我可以动画属性,比如alpha和你有什么但我不能为我的生活移动它。

以下是我的尝试:

[UIView animateWithDuration:1.0f animations:^{
    CGREct oldFrame = self.viewWantingToMove.frame;
    self.viewWantingToMove.frame = CGRectMake(self.viewWantingToMove.frame.origin.x, self.viewWantingToMove.origin.y, self.viewWantingToMove.size.width, self.viewWantingToMove.width.height);
});

这不起作用

[UIView animateWithDuration:1.0f animation:^{
    self.viewWantingToMove.center = CGPoint(self.viewWantingToMove.frame.origin.x, self.viewWantingToMove.frame.origin.y-30
}];

再次nadda ...

在我发现它可能有自动布局之后,请注意我无法将其关闭,因为我必须使用它,然后我尝试了这个。

[self.viewWantingToMove layoutIfNeeded];
[UIView animateWithDuration:1.0f animation:^{
    self.viewWantingToMove.center = CGPoint(self.viewWantingToMove.frame.origin.x, self.viewWantingToMove.frame.origin.y-30
    [self.viewWantingToMove layoutIfNeeded];
}];

这给了我动画......但是向后。它开始向上30点,然后回到原来的位置。谁能帮我这个?它到了你想要咬显示器的那一刻。

1 个答案:

答案 0 :(得分:3)

当您使用自动布局时,您不应该设置任何帧。要移动视图或调整视图大小,您应该修改约束。你没有添加任何约束这一事实意味着它们并不存在。系统会为您添加默认约束。你应该设置你想要的约束,这样你才能知道它们是什么(尝试在视图的顶部,在左侧,以及高度和宽度的那些)。将一个IBOutlet设置为视图顶部的约束(让我们称之为topCon),然后您可以在代码中修改它以使其动画化,

[UIView animateWithDuration:1.0f animation:^{
    self.topCon.constant -= 30;
    [self.view layoutIfNeeded];
}];