我试图将简单的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点,然后回到原来的位置。谁能帮我这个?它到了你想要咬显示器的那一刻。
答案 0 :(得分:3)
当您使用自动布局时,您不应该设置任何帧。要移动视图或调整视图大小,您应该修改约束。你没有添加任何约束这一事实意味着它们并不存在。系统会为您添加默认约束。你应该设置你想要的约束,这样你才能知道它们是什么(尝试在视图的顶部,在左侧,以及高度和宽度的那些)。将一个IBOutlet设置为视图顶部的约束(让我们称之为topCon),然后您可以在代码中修改它以使其动画化,
[UIView animateWithDuration:1.0f animation:^{
self.topCon.constant -= 30;
[self.view layoutIfNeeded];
}];