2013-09-06 12 views
5

In diesem Code benutze ich animation.But zu einer Zeit muss ich den Bild Alpha-Wert auch ändern.Wie kann man den Bild-Alpha-Wert mit Animation in ios sdk erhöhen oder verringern?

-(void)animation 
{ 
    CGPoint point = CGPointMake(imgView.frame.origin.x, imgView.frame.origin.y); 
    imgView.layer.position = point; 
    CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"position.x"]; 
    anim.fromValue = [NSValue valueWithCGPoint:point]; 
    anim.toValue = [NSValue valueWithCGPoint:CGPointMake(point.x + 50, point.y)]; 
    anim.duration = 10.0f; 
    anim.repeatCount =1; 
    anim.removedOnCompletion = YES; 

    anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]; 

    [imgView.layer addAnimation:anim forKey:@"position.x"]; 
    imgView.layer.position = point; 
} 

Antwort

6

können Sie verwenden, um die opacity Schlüssel CABasicAnimation, dies zu tun:

CABasicAnimation *alphaAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"]; 
alphaAnimation.fromValue = [NSNumber numberWithFloat:1.0]; 
alphaAnimation.toValue = [NSNumber numberWithFloat:0.0]; 
[imgView.layer addAnimation:alphaAnimation forKey:@"opacity"]; 

Edit:

Für angegebenen Werte Animieren durch können Sie CAKeyframeAnimation verwenden:

CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"opacity"]; 
    animation.duration = 10.0f; 
    animation.repeatCount = 1; 
    animation.values = [NSArray arrayWithObjects: 
          [NSNumber numberWithFloat:1.0, 
          [NSNumber numberWithFloat:0.5], 
          [NSNumber numberWithFloat:1.0],nil]; 
    animation.keyTimes = [NSArray arrayWithObjects: 
          [NSNumber numberWithFloat:0.0], 
          [NSNumber numberWithFloat:5.0], 
          [NSNumber numberWithFloat:10.0], nil]; 
    [imgView.layer addAnimation:animation forKey:@"opacity"]; 
+0

Danke dude..Für Ihren Vorschlag.Jetzt habe ich es. – raja

+0

@ user2545298: Mit Vergnügen :) –

+0

hi..Also eine weitere Anforderung ist, wenn das Bild ändert es ist x-Position Alpha-Wert sollte sinken, dass bedeutet, dass Bild wird heller gesehen.Nach dem es kam zur nächsten Position Bild sollte heller sein. Vielen Dank im Voraus, wenn Sie eine Lösung für mich haben. – raja

0
//your code of changing x position will be here 

jetzt meinen Code implementieren, die unten geschrieben wird.

UIView animateWithDuration:1.0 animations:^{ 
imgView.alpha = 0.5;//must be in between 0 to 1 
}]; 

jetzt, wenn Ihr Imageview bewegen, wie Sie zur nächsten Position sagen,

unten Code schreiben

// Code für Imageview für die nächste Position .. jetzt unten Code implementieren ...

UIView animateWithDuration:0.5 animations:^{ 
imgView.alpha = 1.0;//must be in between 0 to 1 
}]; 

lassen Sie mich wissen, es funktioniert oder nicht !!!! Hoffe es hilft ...

Happy Coding !!!

+0

hi..my Anforderung ist, wenn Bild ändert, es ist x-Position Alpha-Wert sollte sinken, dass bedeutet, dass Bild wird heller gesehen.Nach dem kam es zur nächsten Position Bild sollte heller sein. Vielen Dank im Voraus, wenn Sie eine Lösung für mich haben. – raja

0

Dieses " blendet unsichtbar "self.view in 500ms.

Alles, was Sie vor dem Aufruf tun, wird "sofort" gesetzt, alles, was Sie im Block "Animation" einstellen (wie das Setzen neuer Frame-Koordinaten), wird über die angegebene Dauer interpoliert.

 [UIView animateWithDuration:0.50 
           delay:0.0 
          options:( UIViewAnimationOptionAllowUserInteraction 
            | UIViewAnimationOptionBeginFromCurrentState 
            | UIViewAnimationOptionCurveEaseInOut) 

         animations:^ { 
          self.view.alpha = 0.0f ; 
         } 

         completion: ^(BOOL){ 
          [self.view removeFromSuperview] ; 
          self.view = nil ; 
         } 
     ] ; 
0

Sie können ein CABasicAnimation Objekt verwenden (einen anderen, weil Sie einen anderen KeyPath animieren werden, denn dies ist nämlich alpha,) und NSNumbers für fromValue und toValue verwenden.

Weitere (und einfachste) Weg ist, die UIView Hilfsmethoden Animation gewidmet zu verwenden (animateWithDuration:… und alle), vor allem, wenn Sie mehrere Objekte gleichzeitig animieren haben (Sie animieren können sowohl die frame und die alpha mit der gleicher Animationsblock, wenn es Ihren Bedürfnissen entspricht und Ihren Code vereinfacht).

Sie können auch CABasicAnimation für den Rahmen und [UIView animateWithDuration:…] für die Alpha mischen, welche Kombination Sie benötigen, abhängig davon, ob Ihre Animationen komplex sind und angepasst werden müssen (benutzerdefinierte Timing-Funktion, nichtlineare Animation, ...) oder nicht.

1

Um die Alpha als zur gleichen Zeit/Geschwindigkeit der x-Position Ihrer Ansicht zu verringern bewegt, einfach den Positionscode zusammen mit dem Alpha-Einstellung Code im selben Satz von Animationseinstellung, wie unten:

CGPoint finalPoint = CGPointMake(500, imgView.center.y); //change for any final point you want 
CGFloat finalAlpha = 0.0; //change the final alpha as you want 
UIView animateWithDuration:1.0 animations:^{ //change the duration as you want 
    imgView.alpha = finalAlpha; 
    imgView.center = finalPoint; 
}]; 
Verwandte Themen