我有点疑惑为什么以下不起作用,button_ONE做了很好的淡入淡出,但是按下按钮_TWO只是将颜色按到黑色而没有淡入淡出。
// FADES OUT OVER 1.5 Secs
- (IBAction)button_ONE:(id)sender {
NSLog(@"FADE ALPHA");
[textField_TOP_01 setAlpha:1.0];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.5];
[textField_TOP_01 setAlpha:0.0];
[UIView commitAnimations];
}
// IMMEDIATELY CHANGES TO BLACK
- (IBAction)button_TWO:(id)sender {
NSLog(@"FADE COLOR");
[textField_TOP_02 setTextColor:[UIColor redColor]];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.5];
[textField_TOP_02 setTextColor:[UIColor blackColor]];
[UIView commitAnimations];
}
这也是使用UIViewController的子类,我对UIView的引用/工作方式也有点疑惑。
非常感谢加里
答案 0 :(得分:3)
UILabel的textColor属性不是动画属性,因此它的更改不会作为动画的一部分完成。
UIView上的动画相关方法是类方法而不是实例方法,因此您可以直接在类上调用它们。请查看http://developer.apple.com/library/ios/#referencelibrary/GettingStarted/Learning_Objective-C_A_Primer/上“方法类型标识符”的文档。
答案 1 :(得分:1)
在beginAnimations:context:
和commitAnimations
声明之间添加以下内容:
[UIView setAnimationTransition:UIViewAnimationTransitionNone forView:textField_TOP_02 cache:YES];