beginAnimations:context:不使用颜色?

时间:2010-10-01 17:32:11

标签: iphone objective-c cocoa-touch

我有点疑惑为什么以下不起作用,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的引用/工作方式也有点疑惑。

非常感谢

加里

2 个答案:

答案 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];