2012-09-06 6 views
4

Ipad에 대한 내 앱의 배경으로 사용하고 싶습니다. 객관적인 C (기본 앱)에 모든 것을 구축하고 있습니다.페이드 아웃 페이드 아웃 퍼팅 대물 렌즈 효과

이미지 (오버레이)를 통해 각 삼각형을 애니메이션화하여 서로 독립적으로 페이드 인 및 페이드 아웃하는 방법을 알아 내려면 약간의 도움이 필요합니다. 효과와 같이 일정한 쉬머를 만들어 이미지가 부드럽지 않게 만듭니다. 각 삼각형을 독립적으로 애니메이션화해야합니까? 내가 임의로 보이는 것처럼 보이지만 그렇게 보이지 않는 알고리즘이 있습니까? 여기

배경 이미지 나는 시작하는 방법과이 문제를 접근하는 방법, 피드백 주시면 감사하겠습니다 위치에 대한 몇 가지 지침이 필요

enter image description here

에게 있습니다.

+2

"바이러스가 아닙니다"라는 광고가 표시 될 때마다 약간의 소리가납니다. 그런 이유로, 나는 imgur를 사용하여 귀하의 게시물에 이미지를 인라인했습니다, SO의 신뢰할 수있는 이미지 공급자. –

+0

감사합니다! 나는 그 이미지를 인라인 할만큼 높은 평판을 가지고 있지 않다. –

+0

곧 가야한다! 사이트에 오신 것을 환영합니다. 귀하의 답변을 얻으시기 바랍니다. –

답변

4

a) 내 조언은 iOS 4에 도입 된 UIViewAnimationWithBlocks를 사용하는 것입니다. 블록을 확실하게 파악하면 매우 유용 할 수 있습니다. 여기에 내가 설명하기 위해 적은 5 분 만에 만든 예는 다음과 같습니다

여기
typedef void(^FadeInOutBlock)(void); 

@interface PMViewController() 
@property (nonatomic, copy) FadeInOutBlock fadeInOutBlock; 
@end 

우리는 다시 블록 구문을하고 우리를 저장하는 형식 정의를 선언합니다. 또한 애니메이션 블록을 보유 할 속성을 만듭니다.

@implementation PMViewController 
@synthesize myView; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    __block PMViewController *_self = self; 


    self.fadeInOutBlock = ^{ 

     [UIView animateWithDuration:0.5f animations:^{ 
      // fade out effect 
      _self.myView.alpha = 0.0f; 
     } completion:^(BOOL success){ 
      [UIView animateWithDuration:0.5f animations:^{ 
       // fade in effect 
       _self.myView.alpha = 1.0f; 
      } completion:^(BOOL success){ 
       // recursively fire a new animation 
       if (_self.fadeInOutBlock) 
        _self.fadeInOutBlock(); 
      }]; 
     }]; 
    }; 
} 

애니메이션 내에서 애니메이션을 만듭니다. 당신은 myview의 alpha가 0.5f 초 안에 0.0f로 감소 될 페이드 아웃으로 시작합니다. 완료되면 두 번째 애니메이션이 실행되어 myView의 알파를 1.0f로 다시 복원하고 마지막으로 첫 번째 애니메이션을 다시 실행합니다. (Animception)

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 

    if (self.fadeInOutBlock) 
     self.fadeInOutBlock(); 
} 

@end 

마지막으로보기에서 처음으로 해제 한 것처럼 보였습니다.

B)

지금, 당신이 언급 반짝 애니메이션, 난 당신이 다른 기간과 알파를 사용하여, 그것의 자신의 UIView에 각각의 삼각형을 분리하고 위의 기술을 사용하는 것이 좋습니다.

많은 작은 UIView가있는 경우 addSubview 메서드를 사용하여 더 큰 UIView로 그룹화하고 해당 '컨테이너'UIView에 애니메이션을 적용하십시오.

예를 들어 네 개의 별도 UIView 컨테이너를 가질 수 있습니다. 컨테이너에는 별도의 UIView가 자식으로 포함되어 있습니다. 그런 다음 각 컨테이너에 하나씩 네 개의 블록 애니메이션을 만든 다음 애니메이션을 적용 할 수 있습니다. 나는 그걸 실험 해보니 꽤 좋은 효과를 낼 수있을 것입니다.

+0

그런데이 예제에서는 ARC를 사용하므로 블록에 대한 전체 메모리 관리가 자동으로 처리됩니다. 이를 명심하십시오. –

+0

이봐, pmd,이 말이 맞는 것 같습니다. 나는 그것을 밖으로 시도하고 다시 당신에게 돌아갈거야. 감사!! –

+1

지금까지 행운? –

0

특수 라이브러리없이이 작업을 수행 할 수 있습니다. 따라서 알파 값이 0 인 검은 색 UIView을 만들어야합니다. UIView의 알파 값이 증가하는 NSTimer을 만듭니다.

+0

네, 그 일을하는 한 가지 방법이라고 생각했는데, 그 문제는 알파 0에서 100으로 전체 레이어를 움직이는 것이 었습니다. 이것은 실제로 독립적 인 애니메이션을 제공하지 않습니다. 찾고있어. 각 삼각형에 자신의 삶을주는 가장 좋은 방법은 무엇입니까? 어쩌면 각 삼각형을 배열에 넣고 불규칙하게 페이드 인/아웃하도록 변경하겠습니까 ?? 나는 많은 다른 응용 프로그램이 이런 식으로 사용하고 싶어한다는 것을 알고 있으므로, 일단이 작업이 끝나면 게시 할 것입니다. –

관련 문제