0

我想在其中使用 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,它会按我的预期工作。-.-

4

0 回答 0