2014-12-20 2 views

ответ

11

Попробуйте

[UIView transitionWithView:myLabel duration:0.25 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{ 
    label.textColor = [UIColor redColor]; 
} completion:^(BOOL finished) { 
}]; 
+0

спасибо, он работает;) – mres

+0

Отлично :) Не могли бы вы принять этот ответ, нажав зеленый галочку :) –

5

Я записываю код Objective-C и Swift

типы анимации

typedef NS_OPTIONS(NSUInteger, UIViewAnimationOptions) { 
UIViewAnimationOptionCurveEaseInOut   = 0 << 16, // default 
UIViewAnimationOptionCurveEaseIn    = 1 << 16, 
UIViewAnimationOptionCurveEaseOut    = 2 << 16, 
UIViewAnimationOptionCurveLinear    = 3 << 16, 

UIViewAnimationOptionTransitionNone   = 0 << 20, // default 
UIViewAnimationOptionTransitionFlipFromLeft = 1 << 20, 
UIViewAnimationOptionTransitionFlipFromRight = 2 << 20, 
UIViewAnimationOptionTransitionCurlUp   = 3 << 20, 
UIViewAnimationOptionTransitionCurlDown  = 4 << 20, 
UIViewAnimationOptionTransitionCrossDissolve = 5 << 20, 
UIViewAnimationOptionTransitionFlipFromTop  = 6 << 20, 
UIViewAnimationOptionTransitionFlipFromBottom = 7 << 20, 
} NS_ENUM_AVAILABLE_IOS(4_0); 

кодирования для Objective-C

[UIView transitionWithView:myLabel duration:0.20 options: UIViewAnimationOptionTransitionFlipFromBottom animations:^{ 
myLabel.textColor = [UIColor redColor]; 

} completion:^(BOOL finished) { 
}]; 

кодирования для Swift

UIView.transition(with: myLabel, duration: 0.20, options: .transitionFlipFromBottom, animations: {() -> Void in 
     self.myLabel.textColor = UIColor.red 
    }, completion: {(_ finished: Bool) -> Void in 
    }) 
+0

спасибо, он работает;) – mres

+0

приветствую друга, –

3

Даже если вы говорите, принятый ответ работает, (1), необходимо использовать TransitionCrossDissolve вместо CurveEaseInOut; (2) во время тестирования я заметил, что в Swift кажется, что вы не можете добавить subview сразу перед анимацией. (Я думаю, что это ошибка.)

Видя, как myLabel кажется локальным в вашем примере (поскольку глобальные переменные должны быть записаны в виде self.myLabel в рамках закрытия блока), есть хороший шанс, что вы добавили myLabel подвид в том же методе, что и анимация, и без задержки.

Так что, если вы по-прежнему возникают проблемы, я рекомендую (1), что делает myLabel глобальных и (2) добавление задержки между добавлением подвид и выполнения анимации на этой подвид, например:

self.view.addSubview(myLabel) 
    var timer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: "animate", userInfo: nil, repeats: false) 
} 

func animate() { 
    UIView.transitionWithView(myLabel, duration: 5.0, options: UIViewAnimationOptions.TransitionCrossDissolve, animations: { 
     self.myLabel.textColor = UIColor.redColor() 
     }, completion:nil) 
} 
+1

Работает только для меня с NSTimer, спасибо! – Phil

Смежные вопросы