动态UILabel与CATransition不工作

时间:2016-04-16 01:07:30

标签: ios core-animation catransition

我试图使用CATransition制作动画UILabel,当我触摸屏幕时可以淡出原始文本并淡入新文本。这是我的代码,我无法弄清楚为什么没有动画。请帮我。我正在使用Xcode 7.3。

var subtitle:UILabel!
var winsize:CGSize!

override func viewDidLoad() {
    super.viewDidLoad()

    let animation = CATransition()
    animation.type = kCATransitionFade
    animation.duration = 0.75
    animation.fillMode = kCAFillModeBoth
    animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
    animation.delegate = self

    self.subtitle = UILabel()
    self.subtitle.text = "f"
    self.subtitle.frame = CGRectMake(45, 30, 200, 50)
    self.subtitle.font = UIFont.systemFontOfSize(25)
    self.subtitle.textColor = UIColor.grayColor()
    self.view.addSubview(self.subtitle)
    self.subtitle.layer.addAnimation(animation, forKey: "animation")
}

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

    self.subtitle.text="HighSchool"
}

在@matt的帮助下,以下代码可以正常工作。

var subtitle:UILabel!
var winsize:CGSize!

override func viewDidLoad() {
    super.viewDidLoad()

    winsize = self.view.frame.size

    self.subtitle = UILabel()
    self.subtitle.text = "f"
    self.subtitle.frame = CGRectMake(45, 30, 200, 50)
    self.subtitle.font = UIFont.systemFontOfSize(25)
    self.subtitle.textColor = UIColor.grayColor()
    self.view.addSubview(self.subtitle)

    UIView.transitionWithView(self.subtitle, duration: 0.5, options: UIViewAnimationOptions.TransitionCrossDissolve, animations: nil, completion: nil)
}


override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    self.subtitle.text="HighSchool"
}

1 个答案:

答案 0 :(得分:0)

像这样:

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    let opts : UIViewAnimationOptions = .TransitionCrossDissolve
    UIView.transitionWithView(self.subtitle, duration: 0.75, options: opts, animations: {
        self.subtitle.text="HighSchool"
    }, completion: nil)
}