Swift CGAffineTransform更改动画视图的初始大小

时间:2016-01-28 21:24:15

标签: ios swift animation

我在名为"的视频"

的UIButton上执行以下动画
UIView.animateWithDuration(duration, animations: {
    self.view.transform = CGAffineTransformMakeScale(0.5, 0.5)
})

当动画运行时,它立即将UIButton的大小加倍,然后将其缩小回原始大小。所以动画确实有效。

但我想要的是动画以UIButton的原始大小开始,然后将其缩小到那个大小的一半。

基本上,我希望UIButton的原始大小出现在动画的开头,而不是结尾。我怎么能这样做?

(我尝试更改view.frame.size.height和width属性,但似乎没有改变UIButton或动画的外观。)

1 个答案:

答案 0 :(得分:1)

您的动画可能会有冲突。

UIView.animateWithDuration(
    duration,
    delay: 0,
    options: .BeginFromCurrentState,
    animations: { () -> Void in
        self.view.transform = CGAffineTransformMakeScale(0.5, 0.5)
    }) { (completed:Bool) -> Void in
        self.view.transform = CGAffineTransformMakeScale(0.5, 0.5)
        // or, to reset:
        // self.view.transform = CGAffineTransformIdentity
}

.BeginFromCurrentState开始此动画可能会完全减少或消除毛刺,并在完成后采取行动(您可以基于completed:Bool的逻辑)也会告诉Core Animation在动画中断时该怎么做