【发布时间】:2016-04-02 04:12:44
【问题描述】:
在我的动画中,中间锁的向上动画比顶部窗格快。如何为中间锁设置动画,使其与顶部窗格一起向上移动?更具体地说,我希望中间锁中心在向上和离开屏幕时始终与顶部窗格底部对齐。
这是我目前拥有的代码,lockBorder 和 lockKeyhole 是所谓的“中间锁”,与 topLock 相比,它向上移动的速度太快了:
@IBOutlet var topLock: UIImageView!
@IBOutlet var bottomLock: UIImageView!
@IBOutlet var lockBorder: UIImageView!
@IBOutlet var lockKeyhole: UIImageView!
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
openLock()
}
func openLock() {
UIView.animateWithDuration(0.5, delay: 1.0, options: [], animations: {
self.lockKeyhole.transform = CGAffineTransformMakeRotation(CGFloat(3.14))
}, completion: { _ in
UIView.animateWithDuration(0.6, delay: 0.2, options: [], animations: {
var topFrame = self.topLock.frame
topFrame.origin.y -= topFrame.size.height
var bottomFrame = self.bottomLock.frame
bottomFrame.origin.y += bottomFrame.size.height
var lockBorderFrame = self.lockBorder.frame
lockBorderFrame.origin.y -= self.view.frame.height
var lockKeyholeFrame = self.lockKeyhole.frame
lockKeyholeFrame.origin.y -= self.view.frame.height
self.topLock.frame = topFrame
self.bottomLock.frame = bottomFrame
self.lockKeyhole.frame = lockKeyholeFrame
self.lockBorder.frame = lockBorderFrame
}, completion: { finished in
})
})
}
【问题讨论】:
-
为什么不把它做成上半部分的子视图?
-
@jtbandes 你能展示一下你会怎么做吗?我目前拥有 Storyboard 中的所有内容。
-
只看代码很难理解它是如何设置的。我推荐的是,而不是
topLock和lockKeyhole/lockBorder是兄弟视图,它们应该是topLock的子视图。然后你可以移动topLock,它会带走其他人。 -
@jtbandes 我会根据你的 cmets 看看我能做什么。解释一下,基本上有 4 张图片,您可以通过查看上面的 IBOutlets 来确认这一点,这些图片的设置与视频开始的方式完全相同。我
标签: xcode swift animation constraints uiviewanimation