标签文本更改的FadeOut / FadeIn转换

时间:2009-12-12 14:21:36

标签: iphone animation

我正在尝试通过一点转换(淡出,更改文本,淡入)来更改UILabel的文本,但我遇到了一些问题。这是我的代码:

- (void) setTextWithFade:(NSString *)text {
    [self setAlpha:1];
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:.25];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(fadeDidStop:finished:context:)];
    [self setAlpha:0];
    [UIView commitAnimations];
}

- (void)fadeDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:.25];
    [self setAlpha:1];
    [UIView commitAnimations];
}

这段代码“有效”(效果很好),但我无法弄清楚如何更改“fadeDidStop”函数中的标签文本...如何“传递”文本变量我的第一个功能是第二个?

提前致谢

3 个答案:

答案 0 :(得分:2)

您在上下文中传递文本:

[UIView beginAnimations:nil context:text];

然后在你的fadeDidStop方法中:

NSString *text = (NSString*) context;

在上下文中传递对象时要小心,确保它们被正确保留。

答案 1 :(得分:0)

...   
 [UIView beginAnimations:nil context:[text retain]];
...


- (void)fadeDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
    self.text = (NSStrinhg *)context;
    [context release];
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:.25];
    [self setAlpha:1];
    [UIView commitAnimations];
}

答案 2 :(得分:-1)

也许最简单的方法是在.h文件中声明NSString对象并使用它来存储要更改的文本。