문제
아래 코드를 고려하고 내가 무엇을 잘못하고 있는지 알려주세요.
두 개의 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 인스턴스를 사용하십시오.
- 애니메이션 블록을 시작하십시오.
- 컨테이너 뷰에서 전환을 설정하십시오.
- 컨테이너 뷰에서 하위 뷰를 제거하십시오.
- 컨테이너 뷰에 새 하위 뷰를 추가하십시오.
- 애니메이션 블록을 커밋하십시오.
사용해보십시오 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이 언급했듯이 컨테이너 뷰 내에서이를 수행해야합니다.
제휴하지 않습니다 StackOverflow