【发布时间】: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