2013-09-06 27 views
5

Trong mã này tôi đang sử dụng animation.But tại một thời điểm tôi cần phải thay đổi giá trị alpha hình ảnh cũng có.cách tăng và giảm giá trị alpha hình ảnh bằng hoạt ảnh trong 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; 
} 

Trả lời

6

Bạn có thể sử dụng opacity chủ chốt của CABasicAnimation để làm điều này:

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

Edit:

Đối với hiệu ứng động thông qua các giá trị quy định, bạn có thể sử dụng CAKeyframeAnimation:

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

Thanks dude..For your suggestion.Now tôi đã nhận nó. – raja

+0

@ user2545298: Với niềm vui :) –

+0

hi..Ngoài ra một yêu cầu khác là khi hình ảnh đang thay đổi, giá trị alpha vị trí x sẽ giảm, nghĩa là hình ảnh sẽ được nhìn thấy nhẹ hơn. Sau đó, hình ảnh vị trí tiếp theo phải sáng hơn. Cảm ơn trước nếu u có bất kỳ giải pháp chia sẻ với tôi. – raja

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

hiện triển khai mã của tôi được viết bên dưới.

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

bây giờ khi ImageView của bạn di chuyển đến vị trí tiếp theo là bạn đang nói, viết mã dưới đây

// mã của bạn cho ImageView cho vị trí tiếp theo .. hiện triển khai dưới mã ...

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

cho tôi biết nó đang hoạt động hay không !!!! Hy vọng điều này sẽ giúp ...

Mã hóa hạnh phúc !!!

+0

hi..yêu cầu của tôi là khi hình ảnh đang thay đổi, giá trị alpha vị trí x sẽ giảm, nghĩa là hình ảnh sẽ được nhìn thấy nhẹ hơn. Sau đó, hình ảnh vị trí tiếp theo phải sáng hơn. Cảm ơn trước nếu u có bất kỳ giải pháp chia sẻ với tôi. – raja

0

này " mờ dần thành vô hình "self.view trong 500ms.

Mọi thứ bạn làm trước khi gọi nó sẽ được đặt "ngay lập tức", mọi thứ bạn đặt trong khối `hoạt hình '(như cài đặt tọa độ khung mới) sẽ được nội suy trong khoảng thời gian đã chỉ định.

 [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

Bạn có thể sử dụng một đối tượng CABasicAnimation (mật khẩu khác bởi vì bạn sẽ animate một KeyPath khác nhau, cụ thể là alpha, cho điều này) và sử dụng NSNumbers cho fromValuetoValue.

khác (và dễ nhất) Cách thứ nhất là sử dụng các phương pháp UIView helper dành riêng cho phim hoạt hình (animateWithDuration:… và tất cả), đặc biệt là nếu bạn có để animate nhiều thuộc tính cùng một lúc (bạn có thể làm động cả framealpha với cùng một khối hình động nếu nó phù hợp với nhu cầu của bạn và đơn giản hóa mã của bạn). Bạn cũng có thể kết hợp CABasicAnimation cho khung và [UIView animateWithDuration:…] cho alpha, bất kỳ kết hợp nào bạn cần tùy thuộc vào hoạt ảnh của bạn phức tạp và cần phải được tùy chỉnh (chức năng định thời tùy chỉnh, hoạt ảnh phi tuyến tính,…) hay không.

1

Để giảm alpha như thời/tỷ lệ x vị trí của điểm đang chuyển động, chỉ cần đặt vị trí các thiết lập đang cùng với mã thiết lập alpha trong cùng một khối của hình ảnh động, như dưới đây:

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