2014-02-09 2 views
0

AM/PM 차선을 없애기 위해 &으로 퇴색 시키려고 노력하고 있습니다. 그러나 두 가지 방법으로 모두 작동하지는 않습니다.UILabel에서 Catransition으로 텍스트를 페이드 아웃하려면 어떻게해야합니까?

하나만 사용하면 효과가 있지만 두 개를 추가하려고하면 적절한 페이드 애니메이션없이 앞뒤로 뒤집습니다.

누구나 내게 왜 어떤 통찰력을 줄 수 있습니까? 어떻게 해결할 수 있습니까?

아래 코드는 내 코드입니다.

var transitionAnimation = CATransition() 
transitionAnimation.type = kCATransitionFade 
transitionAnimation.duration = 0.2 
transitionAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear) 
transitionAnimation.fillMode = kCAFillModeBoth 
self.titleLabel.layer.addAnimation(transitionAnimation, forKey: "fadeAnimation") 
self.titleLabel.text = newTitle 

나를 위해 노력하고 있습니다 :

- (void)setState:(MonringNightLabelState)state animated:(BOOL)animated 

{

CATransition *animationAM = [CATransition animation]; 
animationAM.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
animationAM.type = kCATransitionFade; 
animationAM.duration = 0.3; 

CATransition *animationPM = [CATransition animation]; 
animationPM.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
animationPM.type = kCATransitionFade; 
animationPM.duration = 0.3; 

    if (animated) 
    { 
     [UIView animateWithDuration:0.3 
           delay:0.0 
          options:UIViewAnimationOptionBeginFromCurrentState 
         animations:^{ 
          [self setState:state animated:NO]; 
         } 
         completion:^(BOOL finished) { 

         }]; 
    } 

    switch (state) 
    { 
     case MorningNightLabelStateAM: 
     { 
      [self.morningNightLabel.layer addAnimation:animationAM forKey:@"kCATransitionFade"]; 

      self.morningNightLabel.text = @"AM"; 

     } 
      break; 
     case MorningNightLabelStatePM: 
     { [self.morningNightLabel.layer addAnimation:animationPM forKey:@"kCATransitionFade"]; 

      self.morningNightLabel.text = @"PM"; 
     } 
      break; 
    } 
} 

답변

0

이것은 내가 신속한에 고정하는 방식입니다.

아마이 충분해야한다 :

CATransition *animationPM = [CATransition animation]; 
animationPM.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
animationPM.type = kCATransitionFade; 
animationPM.duration = 0.3; 
[self.morningNightLabel.layer addAnimation:animationAM forKey:@"kCATransitionFade"]; 
self.morningNightLabel.text = (state == MorningNightLabelStateAM) ? @"AM" : @"PM"; 
관련 문제