2013-09-06 12 views
5

このコードでは、私はアニメーションを使用しています。しかし、私はまた、画像のアルファ値も変更する必要があります。ios sdkでアニメーションを使用して画像のアルファ値を増減する方法は?

-(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; 
} 

答えて

6

あなたはこれを行うためのCABasicAnimationopacityキーを使用することができます:あなたはCAKeyframeAnimationを使用することができ、指定した値によってアニメーション化するため

:編集

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

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

おかげです..あなたの提案のために。今私はそれを得た。 – raja

+0

@ user2545298:喜んで:) –

+0

こんにちは..また別の要件は、画像がx位置のアルファ値が小さくなるように画像が変化している場合です。つまり、画像が明るく見えることを意味します。私に解決策を教えていただきありがとうございます。 – raja

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

今下記の書かれている私のコードを実装します。今

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

あなたは、コードの下に実装し、今..次の位置のためのImageViewのためのコードの下に を

//あなたのコードを記述し、言っているように、次の位置にあなたのImageViewの移動...

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

私はそれが動作しているかどうかを教えてください!!!!希望すると助かります...

ハッピーコーディング!

+0

hi..my必要なのは、画像が変化しているときの位置です。アルファ値が小さくなると画像が明るくなります。次の位置に来たら、画像は明るくなります。私に解決策を教えていただきありがとうございます。 – raja

0

これを " 500msでself.viewに見えなくなります。

これを呼び出す前に行うことはすべて「即時」に設定され、アニメーションブロック内で設定したすべてのもの(新しいフレーム座標の設定など)は指定された期間にわたって補間されます。

 [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

あなたは(あなたがこのために別のキーパス、すなわちalphaを、アニメーション化されますので、別のもの)CABasicAnimationオブジェクトを使用してfromValuetoValueためNSNumbersを使用することができます。

別(かつ簡単な)方法は、あなたが同時に複数のプロパティをアニメーション化する必要がある場合は特に(あなたとframealphaの両方をアニメーション化する、アニメーション(animateWithDuration:…およびすべて)に捧げUIViewヘルパーメソッドを使用することですあなたのニーズに合っていて、コードを単純化すれば、同じアニメーションブロック)。

フレームにはCABasicAnimation、アルファには[UIView animateWithDuration:…]を混在させることができます。アニメーションが複雑でカスタム(カスタムタイミング機能、ノンリニアアニメーションなど)が必要かどうかに応じて必要な組み合わせです。

1

ビューのx位置が移動している同じ時間/速度としてアルファを減少させるために、単に、アニメーションの同じブロックにおけるアルファ設定コードと共にコード位置設定を入れて以下のように:

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; 
}]; 
関連する問題