문제

아래 코드를 고려하고 내가 무엇을 잘못하고 있는지 알려주세요.

두 개의 uiviews 사이를 뒤집고 싶습니다.

어떻게 든, 초기보기에서 벗어날 때, 나는 애니메이션없이 뒤집힌보기를 얻습니다. 뒤집을 때 애니메이션이 잘 표시됩니다.

플립은 뷰 자체의 버튼에서 트리거됩니다.

- (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];

}
도움이 되었습니까?

해결책

아마도 컨테이너보기를 전환보기로 사용하지 않기 때문일 수 있습니다. 문서를 참조하십시오 setAnimationTransition : Forview : 캐시 :

전환 중 뷰 모양을 변경하려면 (예 : 한 뷰에서 다른 뷰로 뒤집 으면) 다음과 같이 컨테이너 뷰, uiview 인스턴스를 사용하십시오.

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

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

이유 showLessInfo: 메소드 작업은 컨테이너 뷰를 사용하는 것입니다.

다른 팁

MainWindow (uiwindow)를 컨테이너 뷰로 UIView의 uiwindow 고용으로 사용할 수 있습니까?

또한 iPhone 3.0은 현재 modalViewController 메소드를 통해 플립 트랜잭션을 도입했습니다.

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];

iOS 4.0 후에는 다음과 같이 뷰 사이를 뒤집을 수 있습니다.

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

Jason이 언급했듯이 컨테이너 뷰 내에서이를 수행해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top