2014-12-06 2 views
0
_cardView =[card initCard]; 

[self.view addSubview:_cardView]; 

_cardView.transform=CGAffineTransformScale(CGAffineTransformIdentity, 0.1, 0.1); 
[UIView animateWithDuration:0.3 
       animations:^{ 
        _cardView.transform=CGAffineTransformIdentity; 
       }]; 

지점에서 확장하는 것처럼 보이도록 애니메이션하는보기가 있습니다 (열려있는 응용 프로그램의 애니메이션과 유사). 이보기는 [card initCard]에서 반환되며 사용자 정의 클래스 인 카드는 _cardView에 할당됩니다. CGAffineTransformScale을 사용하여 먼저 스케일을 줄인 다음 스케일의 증가를 애니메이션으로 나타냅니다. 이것은 첫 번째 카드에 대해 완벽하게 작동합니다. 그러나 _cardView가 nil로 설정되고 새 카드가 할당되면 동일한 변환 및 애니메이션 코드가 잘못된 애니메이션을 생성하여 감소하기 전에보기가 확대됩니다. 문제는 스케일을 0.1,0.1로 만드는 것으로 가정하지만 이것을 해결할 수는 없습니다. 무기 호에변환 후 축척 재설정

설정 :

else if (sender.state == UIGestureRecognizerStateEnded || sender.state == UIGestureRecognizerStateCancelled || sender.state == UIGestureRecognizerStateFailed) 
{ 
    if(sender.view.center.x>0){ 
     [UIView animateWithDuration:0.2 animations:^{ 
      CGRect rect=[sender.view frame]; 
      rect.origin.x=([self.view frame].size.width/2)-129.5; 
      [sender.view setFrame:rect]; 
      sender.view.alpha = 0.8; 

     }]; 
    }else{ 
     [UIView animateWithDuration:0.5 animations:^{ 
      _protoypeView.alpha=0.0; 
      _protoypeView=nil; 
      _cardView=nil; 

      [self nextCard]; 
     }]; 
    } 
} 

과 기능 nextCard : CGAffineTransform의

-(void)nextCard{ 
    if(cardNumber>[questionArray count]-1){ 
     NSLog(@"Out of cards"); 
    }else{ 
     QuestionCard *card=[[QuestionCard alloc]init]; 
     NSArray* array =[[NSArray alloc]initWithArray:questionArray[cardNumber]]; 
     card.questionString=array[3]; 
     card.whenPosted=array[0]; 
     card.isAnon=array[2]; 
     card.user=array[1]; 
     card.replies=array[4]; 
     card.profileImg=array[5]; 
     _cardView =[card initCard]; 
     [self.view addSubview:_cardView]; 
     _cardView.alpha=0.0; 
     _cardView.transform=CGAffineTransformScale(CGAffineTransformIdentity, -1, -1); 
     _cardView.transform=CGAffineTransformIdentity; 
     [UIView animateWithDuration:1 animations:^{ 
      _cardView.alpha=0.7; 
     }]; 

     UIPanGestureRecognizer * pan1 = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePanImage:)]; 
     pan1.minimumNumberOfTouches = 1; 
     [_cardView addGestureRecognizer:pan1]; 
     yOfView=[_cardView frame].origin.y+([_cardView frame].size.height/2); 
     cardNumber++; 

    } 
} 

첫 번째 경우 (성공 쿼리 후 데이터베이스를 구문 분석은) :

[UIView animateWithDuration:0.5 animations:^{ 
       _protoypeView.alpha=0.0; 
      }completion:^(BOOL finished){ 
       QuestionCard *card=[[QuestionCard alloc]init]; 
       NSArray* array =[[NSArray alloc]initWithArray:questionArray[cardNumber]]; 
       card.questionString=array[3]; 
       card.whenPosted=array[0]; 
       card.isAnon=array[2]; 
       card.user=array[1]; 
       card.replies=array[4]; 
       card.profileImg=array[5]; 
       _cardView =[card initCard]; 

       [self.view addSubview:_cardView]; 

       _cardView.transform=CGAffineTransformScale(CGAffineTransformIdentity, 0.0, 0.0); 
       [UIView animateWithDuration:0.3 
           animations:^{ 
            _cardView.transform=CGAffineTransformIdentity; 
           }]; 
       UIPanGestureRecognizer * pan1 = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePanImage:)]; 
       pan1.minimumNumberOfTouches = 1; 
       [_cardView addGestureRecognizer:pan1]; 
       yOfView=[_cardView frame].origin.y+([_cardView frame].size.height/2); 
       cardNumber++; 

      }]; 
+0

카드를 없애는 방법과이 부분이 다시 호출되는 방법을 보여줍니다. – Unheilig

+0

내 질문에 편집 됨 – RodMatveev

+0

여기에서 변경해야 할 사항이 많이 있습니다. 질문에 초점을 맞추자 : 첫 번째 코드 블록은 어디에 두어야합니까? 방금 추가 한 코드에는 없습니다. – Unheilig

답변

0

문제 발견 - [self nextCard]는 애니메이션에서 호출되었지만 comp에서 호출되어야합니다. letion.