【问题标题】:UIView animation animates but immediately moves back to original positionUIView 动画动画但立即移回原始位置
【发布时间】:2015-12-16 21:05:00
【问题描述】:

这是在 Xcode 7 中用 Swift 2 编写的。

我有一个UIView,最初设置在屏幕下方。被触发后,它应该从屏幕底部向上滑动。这是动画的代码:

func durationView(sender: UIButton){
    let heightOffset = self.durationNotificationContainerView.frame.height

    self.durationNotificationContainerView.translatesAutoresizingMaskIntoConstraints = false
    UIView.animateWithDuration(0.2, animations: {self.durationNotificationContainerView.frame = CGRectMake(self.durationNotificationContainerView.frame.origin.x, self.durationNotificationContainerView.frame.origin.y + heightOffset, self.durationNotificationContainerView.frame.width, self.durationNotificationContainerView.frame.height)})
}

现在发生的情况是,当我按下触发此视图的UIButton 时,它会向上滑动,然后立即向下滑动(到屏幕外)。我还应该指出,在我的故事板中,我手动添加了一些带有 AutoLayout 约束的视图,所以我不知道这是否是我的动画混乱的原因。

【问题讨论】:

  • 是的,这会导致问题,使用自动布局时不能设置 frame 属性 - 您必须将 layoutconstrains 连接为 outlet 并对其进行操作。
  • 但是正在动画的视图没有任何约束。如果我使用CGRectMake 以编程方式创建所有内容会好吗?
  • 如果您的视图没有任何约束,设置框架就可以了。快速尝试一下。
  • 是的.. 刚刚写了一个小应用程序,使用您的功能在按钮按下时移动视图,没有任何问题。只要您没有任何限制,就可以很好地设置框架。仔细检查。
  • 实际上你的代码对我有用,但是视图并没有上升而是下降,因为你正在向 Y 添加一个值。它不会回到它的初始位置

标签: ios swift uiview uiviewanimation


【解决方案1】:

在自动布局中,需要在动画中更改和更新约束,如下所示:

- (IBAction)moveAction:(id)sender {
    self.spaceConstraint.constant += 220;

    [UIView animateWithDuration:0.5 animations:^{
         [self.imageView layoutIfNeeded];
    }];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    相关资源
    最近更新 更多