我想在其中使用 UIImageView 为 UIView 设置动画。但是在我下面的代码中,它的接缝就像动画的正确 UIView.frame 值是在第二次运行中分配的。我不知道为什么会这样。在第二次运行动画看起来像我想要的。
代码
private func animateToPreviewMode(){
let y = UIScreen.mainScreen().bounds.height * 0.2
let width = UIScreen.mainScreen().bounds.width
let height = UIScreen.mainScreen().bounds.height * 0.4
let frame = CGRectMake(0, y, width, height)
previewImageView.image = stillImage
frameForCapture.hidden = true
previewView.hidden = false
println("run")
println("target frame \(frame)")
println("preanimation\(previewView.frame)")
UIView.animateWithDuration(1.5, delay: 0, usingSpringWithDamping: 0.5, initialSpringVelocity: 1, options: UIViewAnimationOptions.BeginFromCurrentState, animations: { () -> Void in
println("pre set \(self.previewView.frame)")
self.previewView.frame = frame
println("post set\(self.previewView.frame)")
}) { (complete) -> Void in
//complete
//all buttons enabled
println("complete: \(self.previewView.frame)")
}
}
查看层次结构
输出
target frame (0.0, 113.6, 320.0, 227.2)
preanimation(0.0, 0.0, 320.0, 568.0)
pre set (0.0, 0.0, 320.0, 568.0)
post set(0.0, 113.6, 320.0, 227.2)
complete: (0.0, 0.0, 320.0, 568.0)
run
target frame (0.0, 113.6, 320.0, 227.2)
preanimation(0.0, 0.0, 320.0, 568.0)
pre set (0.0, 0.0, 320.0, 568.0)
post set(0.0, 113.6, 320.0, 227.2)
complete: (0.0, 113.6, 320.0, 227.2)
更新
如果我转身previewImageView.image = stillImage
,它会按我的预期工作。-.-