Ich habe ein Label, das nach einer Geste erscheint und ich möchte das Etikett ausblenden. Der folgende Code funktioniert, aber wenn ich mehrere Gesten hintereinander mache, beenden die letzten nicht die Überblendung und Anzeige, sondern hören abrupt auf. Hier ist mein Code:Fade Animation abrupt stoppt
- (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");
}];
}
Irgendwelche Vorschläge zur Behebung?
Ich habe versucht Ihren Code, aber es macht das gleiche. Ich denke, es könnte damit zusammenhängen, dass das gleiche Label mehrmals vergeben wird. Es arbeitet konsistent mit 2 Etiketten auf dem Bildschirm, aber das dritte Etikett endet im Allgemeinen ohne richtiges Verblassen. Irgendwelche anderen Gedanken? –
Gleich nachdem ich den letzten Kommentar gepostet hatte, schaute ich noch einmal auf den Code. Ich habe '[myLabel removeFromSuperview];' entfernt und alle Labels werden ordnungsgemäß ausgeblendet. –
Zuerst waren Sie freundlich, aber Sie sollten diese Antwort als akzeptiert deaktivieren, da es nicht funktioniert hat. Als nächstes, sogar wenn der Code jetzt funktioniert, haben Sie ein Leck. Ändern der myLabel-Zuweisung zu 'myLabel = [[[[UILabel Alloc] initWithFrame: CGRectMake (GestenEndPoint.x, GestenEndPoint.y, 200, 20)] Autorelease]; würde dafür sorgen - außer dass alle Beschriftungen jetzt gehen für den Lebenszyklus deiner Sicht zu bleiben, da du "removeFromSuperview" weglässt ... Ich werde das in eine andere Antwort bringen. – Wienke