FadeOut/FadeIn标签文本更改转换

问题描述:

我试图改变一个UILabel文本的一个小过渡(淡出,改变文本,淡入),但我面临一些问题。这里是我的代码:FadeOut/FadeIn标签文本更改转换

- (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”功能标签文本...如何我可以将文本变量从第一个函数传递到第二个函数吗?

在此先感谢

您通过在上下文中的文字:

[UIView beginAnimations:nil context:text]; 

然后在您的fadeDidStop方法:

NSString *text = (NSString*) context; 

的背景下,传递对象时要留意,确保他们得到适当保留。

+0

正确,除了你可能想要将你的上下文实际设置为零以外的东西:) – rein

+0

谢谢,它做到了! – Alexandre

+0

好的呼叫控制。我的坏,这是一个深夜;-) – lyonanderson

也许simpliest方法是声明的NSString对象的.h文件中,并用它来存储文本改变。

+0

我想我会这样做,但我只想知道是否有更好的方法来做到这一点。 – Alexandre

... 
[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]; 
}