2016-04-16 19 views
-1

私は、Catransitionを使ってアニメーションUILabelを作成しようとしています。これは、元のテキストをフェードアウトし、画面に触れると新しいテキストが消えることがあります。ここに私のコードがあり、アニメーションがない理由を理解できません。私を助けてください。私はXcode 7.3を使用しています。 @mattからの助けを借りて Catransitionが動作しないアニメーションUILabel


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" 
} 

は、次のコードは動作します。このよう

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" 
} 
+0

まず感謝。私がしたいことは、テキストを変更すると元のテキストが消えて、新しいテキストがフェードインするように、UILabelを作成することです。http://stackoverflow.com/questions/3073520/animate-text-change -in-uilabel – user2232335

+0

まあ、あなたのコードはそういうことをしません。あなたは単に 'self.subtitle.text =" HighSchool "'と言っています。そこにフェードアニメーションはありません。それは空から落ちないだろう。明示的にアニメーションに書き込む必要があります。 'transitionWithView:duration:options:animations:completion:'を呼び出し、テキストを変更します。これは3行のコードで、シンプルです。 – matt

+0

それは動作します!どうもありがとうございます! – user2232335

答えて

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) 
}