5

Tôi cố gắng triển khai hoạt ảnh: khi bạn vào Thư viện ảnh iPhone, nhấn hình ảnh, bạn sẽ thấy hình ảnh toàn màn hình. Dưới đây bạn có thể thấy thanh công cụ với nút thùng rác. Khi bạn nhấn nút này, hình ảnh sẽ bị xóa với hoạt ảnh. Tôi cố gắng thực hiện điều này, nhưng tôi không biết, làm thế nào để thực hiện các biến đổi của hình ảnh, sử dụng táo. Đây là cách tốt nhất, tôi có thể làm:Hoạt ảnh, giống như khi bạn xóa khỏi Thư viện ảnh iPhone

[UIView transitionWithView:self.view duration:0.1 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{ 
     [self.view addSubview:scrollImageView]; 
    } completion:^(BOOL finished) { 
     [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionAllowUserInteraction animations:^{ 
      CGRect frame = scrollImageView.frame; 
      frame.size = CGSizeMake(frame.size.width * 0.75, frame.size.height * 0.75); 
      frame.origin = CGPointMake((size.width - frame.size.width)/2, (size.height - frame.size.height)/2); 
      scrollImageView.frame = frame; 
     } completion:^(BOOL finished) { 
      [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionAllowUserInteraction animations:^{ 
       CGRect frame = scrollImageView.frame; 
       frame.size = CGSizeMake(frame.size.width * 0.05, frame.size.height * 0.05); 
       frame.origin = CGPointMake(size.width, size.height); 
       scrollImageView.frame = frame; 
       CGAffineTransform transform = scrollImageView.transform; 
       CGAffineTransform rotatedTransform = CGAffineTransformRotate(transform, 45 * 3.14/180); 
       scrollImageView.transform = rotatedTransform; 
      } completion:^(BOOL finished) { 
       [scrollImageView removeFromSuperview]; 
      }]; 
     }]; 
    }]; 

Cảm ơn bạn trước.

Cập nhật Như tôi hiểu, tôi không thể làm phim hoạt hình này với Core-Animation, nhưng có thể bất cứ ai có thể tư vấn cho tôi những hình ảnh động các simular nhất cho iPhone Gallery hình ảnh động, nhưng mà không sử dụng OpenGL?

Trả lời

3

Tại thời điểm này, hoạt ảnh chính xác mà bạn đang nói không thể thực hiện bằng cách sử dụng Hoạt ảnh chính hoặc UIKit. Bạn sẽ cần phải sử dụng OpenGL và áp dụng các hình ảnh như là một kết cấu và làm hình ảnh động của bạn trong đó.

+0

Bạn có thể tư vấn cho tôi hoạt ảnh mô phỏng nhất cho hoạt ảnh Thư viện ảnh nhưng không sử dụng OpenGL? –

+0

Trước đây tôi đã thực hiện một [bài đăng trên blog] (http://ronnqvist.tumblr.com/post/23234805389/unobtrusive-hints-of-joy) cố gắng sao chép hoạt ảnh "Mở trong nền" từ Safari. Nó khá giống nhau nhưng đồng thời rất khác nhau. Bạn có lẽ có thể học một cái gì đó từ nó và thích ứng với các phần bạn cần cho hoạt hình của bạn. –

6

Bạn có thể sử dụng ví dụ sau cho hình ảnh động này:

UIView *senderView = (UIView*)sender; 

CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"transform"]; 
      anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
      anim.duration = 0.125; 
      anim.repeatCount = 1; 
      anim.autoreverses = YES; 
      anim.removedOnCompletion = YES; 
      anim.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.2, 1.2, 1.0)]; 
      //[senderView.layer addAnimation:anim forKey:nil]; 


UIBezierPath *movePath = [UIBezierPath bezierPath]; 
      [movePath moveToPoint:icon.center]; 
      [movePath addQuadCurveToPoint:senderView.center 
          controlPoint:CGPointMake(senderView.center.x, icon.center.y)]; 

      CAKeyframeAnimation *moveAnim = [CAKeyframeAnimation animationWithKeyPath:@"position"]; 
      moveAnim.path = movePath.CGPath; 
      moveAnim.removedOnCompletion = YES; 

      CABasicAnimation *scaleAnim = [CABasicAnimation animationWithKeyPath:@"transform"]; 
      scaleAnim.fromValue = [NSValue valueWithCATransform3D:CATransform3DIdentity]; 
      scaleAnim.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.1, 0.1, 1.0)]; 
      scaleAnim.removedOnCompletion = YES; 

      CABasicAnimation *opacityAnim = [CABasicAnimation animationWithKeyPath:@"alpha"]; 
      opacityAnim.fromValue = [NSNumber numberWithFloat:1.0]; 
      opacityAnim.toValue = [NSNumber numberWithFloat:0.1]; 
      opacityAnim.removedOnCompletion = YES; 

      CAAnimationGroup *animGroup = [CAAnimationGroup animation]; 
      animGroup.animations = [NSArray arrayWithObjects:moveAnim, scaleAnim, opacityAnim, nil]; 
      animGroup.duration = 0.5; 
      [icon.layer addAnimation:animGroup forKey:nil]; 

tôi đã sửa đổi mã, bạn phải thực hiện những thay đổi về nó sau, thiết lập các quan điểm người gửi như self.view, và thay đổi điểm kết thúc của hoạt ảnh (hiện tại là senderView.center) theo yêu cầu của bạn

+0

Xin vui lòng, bạn có thể thay đổi mẫu của bạn, sử dụng scrollImageView của tôi và self.view. Bởi vì tôi đã cố gắng sử dụng scrollImageView thay vì biểu tượng, và hình ảnh động là awfull, tôi nghĩ rằng, tôi không hiểu một cái gì đó. –

+0

@Paul Galavic - Đã thực hiện loại hoạt hình này? Tôi tò mò muốn biết. Tôi cũng muốn triển khai nó. – TheFlash

0

Tôi nghĩ bạn đang nói về hoạt ảnh chuyển tiếp "hút".

Có thể kích hoạt nó, nhưng nó là một quá trình chuyển đổi riêng và Apple có thể từ chối ứng dụng của bạn nếu bạn sử dụng nó.

Mã này nên làm điều đó, sử dụng một mã số chuyển đổi của 103:

[UIView beginAnimations: nil bối cảnh: NULL]; [UIView setAnimationDuration: 1.0]; [UIView setAnimationTransition: transtionIndex forView: bộ nhớ cache containerView: NO]; [containerView addSubview: newView]; [oldView removeFromSuperview]; [UIView commitAnimations];

Hoặc tìm kiếm trên mạng cho quá trình chuyển đổi Hình ảnh lõi được gọi là "suckEffect"

4

Tôi biết hơi muộn. Tuy nhiên, bạn nên kiểm tra giải pháp của Ciechan tên là BCGenieEffect. Có thể được tìm thấy here. Core Animation thuần túy của nó và rất dễ hiểu. Tôi nghĩ đó là những gì bạn đang tìm kiếm.

Chúc may mắn

Các vấn đề liên quan