2015-02-01 2 views
2

다음 코드를 사용하여 UIView를 뒤집습니다. 그것은 연극 카드입니다. 컨테이너 뷰가 있으며, 앞과 뒤의 두 아이가 있습니다. 나는 이것을 올바른 방법이어야한다는 비슷한 질문을 읽었지 만 실제 플립 자체는 수행되지 않고있다.transitionWithView 플립 애니메이션을 수행하지 않습니다.

나는 카드를 화면 가운데로 옮기고 뒤에서 앞으로 반전 시켜서 애니메이션을 만들려고합니다. 센터로의 이동은 괜찮지 만 뒤집기는 결코 발생하지 않습니다.

self으로 인수를 변경하면 전체보기 컨트롤러가 전환되고 cardContainer에 그대로두면 아무것도 수행되지 않습니다.

의아해 :(

UIView *cardContainer = [[UIView alloc] initWithFrame:CGRectMake(20, self.view.frame.size.height + 20, [Card size].width, [Card size].height)]; 
[self.view addSubview:cardContainer]; 

Card *card = _playerOneCards[_playerOneNextCardIndex]; 
card.frame = CGRectMake(0, 0, [Card size].width, [Card size].height); 
card.delegate = self; 
[cardContainer addSubview:card]; 

CardBack *back = [[CardBack alloc] initWithFrame:CGRectMake(0, 0, [Card size].width, [Card size].height)]; 
[cardContainer addSubview:back]; 


[UIView transitionWithView:cardContainer 
        duration:duration 
        options:UIViewAnimationOptionTransitionFlipFromLeft 
       animations:^{ 
        back.alpha = 0.0f; 
        cardContainer.center = self.center; 
       } 
       completion:nil]; 
+0

cardContainer는 어떻게 생성됩니까? – CaptJak

+0

전체 코드를 표시 할 수 있습니까? 애니메이션? cardContatiner와 children이 만들어지는 곳을 포함하여 – rakeshbs

+0

나는 그것을, 고마워했다. – Luke

답변

3

이 시도는. 컨테이너보기는 애니메이션이 시작되기 전에 계층 구조에 배치해야합니다.

//Add container views and subviews 

[CATransaction flush]; 

[UIView transitionWithView:cardContainer 
      duration:duration 
      options:UIViewAnimationOptionTransitionFlipFromLeft 
     animations:^{ 
      back.alpha = 0.0f; 
      cardContainer.center = self.center; 
     } 
     completion:nil]; 
당신은 또한 dispatch_after 호출 함수를 마무리 할 수 ​​

자세한 내용 확인 : http://andrewmarinov.com/working-with-uiviews-transition-animations/

+0

그걸 가지고 있는데, 나는'dispatch_after'를 사용하여 비슷한 것을했을 것입니다. 그러나 이것은 훨씬 더 깨끗합니다. 감사합니다! – Luke