-1
Ich versuche, eine animierte UILabel mit CATransition zu machen, die den ursprünglichen Text ausblenden und den neuen Text einblenden kann, wenn ich den Bildschirm berühre. Hier ist mein Code und ich kann nicht herausfinden, warum es keine Animation gibt. Bitte hilf mir. Ich benutze Xcode 7.3.Animierte UILabel mit CATransition funktioniert nicht
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"
}
Mit Hilfe von @ Matt, der folgende Code funktioniert.
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"
}
Erste danken für Ihre Hilfe. Was ich tun möchte, ist ein UILabel, dass, wenn ich seinen Text ändere, der ursprüngliche Text ausgeblendet und neuer Text eingeblendet wird, wie der in http://stackoverflow.com/questions/3073520/animate-text-change gezeigte -in-uilabel – user2232335
Nun, dein Code tut nichts dergleichen. Du sagst nur 'selftitle.text = "HighSchool" '. Dort gibt es keine Fade-Animation. Es wird nicht vom Himmel fallen; Sie müssen explizit in die Animation schreiben. Rufen Sie 'transitionWithView: duration: options: animations: completion:' auf und ändern Sie den Text. Es sind drei Codezeilen, super einfach. – matt
Es funktioniert !!! Ich danke dir sehr! – user2232335