翻转Lable上的Swift动画

时间:2016-02-15 11:22:39

标签: ios animation

我在Swift 2中遇到了一个无法修复的问题......

我的it.idUILabel都是颠倒的。我添加了UIView的扩展名来执行动画(增长然后缩小),当我点击按钮时执行该动画。但是当动画执行时,UIView在动画期间会回转180°,而UILabel却没有......对于为什么会发生这种情况有任何疑问?

以下是代码:

UIView扩展程序:

UIView's

我如何翻转func animateBounce(multiplier: CGFloat, duration: NSTimeInterval) { UIView.animateWithDuration(duration / 2, animations: { self.transform = CGAffineTransformMakeScale(multiplier, multiplier) }, completion: { finish in UIView.animateWithDuration(duration / 2) { self.transform = CGAffineTransformIdentity } }) } UIView

UILabel

我如何调用动画:

label.transform = CGAffineTransformMakeRotation(CGFloat(M_PI))
view.transform = CGAffineTransformMakeRotation(CGFloat(M_PI))

答案:(亚当) 我正在覆盖标签的transform属性,从而删除了先前的转换(旋转)。您应该使用let multiplier = 1.5 as CGFloat let animationTime = 0.5 as NStimeInterval label.animateBounce(1.5, duration: animationTime) view.animateBounce(1.5, duration: animationTime) 添加添加新转换而不删除以前的转换。

2 个答案:

答案 0 :(得分:1)

你在说

self.transform = CGAffineTransformMakeScale(multiplier, multiplier)

self.transform = CGAffineTransformIdentity

这些行指定self将具有的整个变换。因此,他们删除所有现有的变换,包括最初将标签翻转过来的变换,将其替换为您指定的变换。

如果那不是你想做的事,那就别这样做了。例如,不要调用CGAffineTransformMakeScale,而是调用CGAffineTransformScale,这样就可以启动并使用现有的转换视频并连接< / em>比例转换为。

答案 1 :(得分:1)

当数据更改时翻转标签 迅速4。

我已将标签从顶部翻转到底部,其中我的标签声明为

@IBOutlet var cartCountLbl: UILabel! 在“ viewDidLoad()”中。

使用此方法调用函数

self.perform(#selector(self.flip), with: nil, afterDelay: 0) flip方法声明为

    @objc func flip() {
        let transitionOptions: UIViewAnimationOptions = [.transitionFlipFromTop, .showHideTransitionViews] 
        UIView.transition(with: cartCountLbl, duration: 1.0, options: transitionOptions, animations: {
        })
    }