我有一個標籤出現在手勢後,我想淡出標籤。下面的代碼可以工作,但是如果我連續做幾個手勢,最後一個不會完成淡入淡出和顯示,但會突然停止。這裏是我的代碼:Fade動畫突然停止
- (void) gestureLabelAppear:(NSString *)theLabelText
{
myLabel = [[UILabel alloc] initWithFrame:CGRectMake(gestureEndPoint.x, gestureEndPoint.y, 200, 20)];
myLabel.center=CGPointMake(gestureEndPoint.x, gestureEndPoint.y);
myLabel.textAlignment = UITextAlignmentCenter;
myLabel.text =theLabelText;
[self.view addSubview:myLabel];
[self fadeOutLabels];
}
-(void)fadeOutLabels
{
[UIView animateWithDuration:3.0
delay:0.0
options:UIViewAnimationCurveEaseInOut
animations:^ {
myLabel.alpha = 0.0;
}
completion:^(BOOL finished) {
[myLabel removeFromSuperview];
NSLog(@"removed label");
}];
}
有關如何解決的任何建議?
我試過你的代碼,但它做的是同樣的事情。我想這可能與多次分配相同標籤有關。它始終與屏幕上的兩個標籤一起工作,但第三個標籤通常沒有正常褪色而結束。任何其他想法? – 2012-04-15 12:15:14
在我發佈最後一條評論之後,我又一次查看了代碼。我刪除了[[myLabel removeFromSuperview];'並且所有標籤都淡入淡出。 – 2012-04-15 12:21:27
首先,您很善良,但您應該取消選中此答案,因爲它不起作用。接下來,實際上,即使代碼現在正在工作,您確實有泄漏。將myLabel賦值更改爲myLabel = [[[[UILabel alloc] initWithFrame:CGRectMake(gestureEndPoint.x,gestureEndPoint.y,200,20)] autorelease];'會照顧 - 除了所有的標籤現在因爲你忽略了'removeFromSuperview',所以你要留意你的視圖的生命週期......我會把它放在另一個答案中。 – Wienke 2012-04-15 13:12:44