2009-05-09 3 views
15

아래의 코드를 생각해보고 내가 뭘 잘못하고 있는지 말해주십시오.Flip View Iphone

두 UIView간에 전환하고 싶습니다.

어떻게 든 초기 뷰에서 벗어날 때 애니메이션을 사용하지 않고 반전 된 뷰를 얻습니다. 뒤집어지면 애니메이션이 잘 보입니다.

플립은보기 자체의 단추에서 트리거됩니다.

- (IBAction)showMoreInfo:(id)sender 
{ 
    UIView *moreInfo = self.flipView; 

    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:2.0]; 
    [UIView setAnimationBeginsFromCurrentState:NO]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES]; 

    UIView *parent = self.view.superview; 
    [self.view removeFromSuperview]; 

    [parent addSubview:moreInfo]; 

    [UIView commitAnimations]; 

} 



- (IBAction)showLessInfo:(id)sender 
{ 
    UIView *lessInfo = self.view; 

    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:2.0]; 
    [UIView setAnimationBeginsFromCurrentState:NO]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.flipView cache:YES]; 

    UIView *parent = self.flipView.superview; 
    [self.flipView removeFromSuperview]; 

    [parent addSubview:lessInfo]; 

    [UIView commitAnimations]; 

} 

답변

17

이는 전환보기로 컨테이너보기를 사용하지 않았기 때문일 수 있습니다. 당신은 다음과 같이 하나 개의보기에서 다른-후 컨테이너보기, UIView의 인스턴스를 사용하려면 플립, 전환 - 예를 들어시 뷰의 모양을 변경하려면 setAnimationTransition:forView:cache:

의 문서를 참조하십시오 :

  1. 애니메이션 블록을 시작하십시오.
  2. 컨테이너보기에서 전환을 설정하십시오.
  3. 컨테이너보기에서 하위보기를 제거하십시오.
  4. 새 하위보기를 컨테이너보기에 추가하십시오.
  5. 애니메이션 블록을 커밋합니다.

showLessInfo: 방법은 당신이 컨테이너보기를 사용하는 것입니다 작동 showMoreInfo:

이유의 애니메이션 전환보기에서 self.view.superview를 사용해보십시오.

+0

친애하는 Jason, self.view.superview를 할 때, showMoreInfo :에서 제대로 전환되지만, showLessInfo를 사용하여 뒤집 으면 :) 이제는 오동작하지 않습니다. 애니메이션없이 초기보기 만 보여줍니다. 이 방법으로 self.view.superview를 사용하는 것은 도움이되지 않습니다. 나는 아주 어리 석다는 것을 확신하지만 코드를 한 줄만 더 주면 매우 감사 할 것입니다. –

+1

바보 인 것에 대해 유감스럽게 생각합니다. 나는 self.flipView.superview에 넣었다. 그리고 모든 것은 지금 멋지다! –

12

UIView에서 UIWindow로 MainWindow (UIWindow)를 컨테이너보기로 사용할 수 있습니까?

CustomViewController *vc = [[CustomViewController alloc] 
    initWithNibName:@"CustomViewController" bundle:nil]; 

vc.delegate = self; 

// The magic statement. This will flip from right to left. 
// present the modal view controller then when you dismissModalViewController 
// it will transition flip from left to right. Simple and elegant. 
vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 

[self presentModalViewController:vc animated:YES]; 

[vc release]; 
+0

이 방법으로보기 컨트롤러를 제거하려면 : dismissModalViewControllerAnimated – Alex

+0

멋진 팁 :) thax @Sukima –

0

는 아이폰 OS 4.0 이후,이 함께보기 사이를 전환 할 수 있습니다 :

[UIView transitionFromView:sourceView toView:destinationView duration:0.35f options:UIViewAnimationOptionTransitionFlipFromRight completion:^(BOOL finished) { 
    NSLog(@"I just flipped!"); 
}]; 

제이슨 언급 한 바와 같이, 당신은해야합니다

또한 아이폰 3.0은 presentModalViewController 방법을 통해 플립 거래를 도입 이것은 컨테이너보기 내에서 발생합니다.

관련 문제