2016-04-16 2 views
-1

Я пытаюсь сделать анимированный UILabel с помощью CATransition, который может исчезать из исходного текста и исчезать в новом тексте, когда я касаюсь экрана. Вот мой код, и я не могу понять, почему нет анимации. Пожалуйста, помогите мне. Я использую Xcode 7.3.Анимированная UILabel С CATransition Not Working

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

Во-первых спасибо за вашу помощь. То, что я хочу сделать, - сделать UILabel тем, что когда я меняю текст, исходный текст исчезает, и новый текст исчезает, как показано на http://stackoverflow.com/questions/3073520/animate-text-change -in-uilabel – user2232335

+0

Ну, ваш код не делает ничего подобного. Вы просто говорите «self.subtitle.text =« HighSchool ». Там нет никакой увядающей анимации. Это не упадет с неба; вы должны явно писать в анимации. Вызовите 'transitionWithView: duration: options: animations: completion:' и измените текст. Это три строки кода, супер простые. – 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) 
}