有没有办法执行UIModalTransitionStyleCoverHORIZONTAL(而不是FlipHorizo​​ntal)?

时间:2009-12-09 06:54:59

标签: iphone objective-c modal-dialog

我正在使用objective-c(很明显,我猜)并且我想知道是否有一种(简单)方式来呈现模态视图但是让视图从屏幕右侧滑入。

UIModalTransitionStyleCoverVertical 让新视图从底部滑入,所以我天真地认为会有一个水平对应物,但我在文档中找不到。

我不是指 UIModalTransitionStyleFlipHorizo​​ntal (我不想要3D翻转)。

如果没有UINavigationController的包袱,还有其他办法吗?想法?

TKS!

1 个答案:

答案 0 :(得分:4)

您可以通过将视图添加为子视图,但设置其变换以使其位于屏幕外,在您的情况下至少一个屏幕宽度。然后启动一个动画块,包括将变换重置为单位。动画完成后,您可以执行其他操作,例如替换现在隐藏的视图。

这是一个片段:

[[outgoingView superview] insertSubview:incomingView aboveSubview:outgoingView];
incomingView.transform = [self affineTransformForTransationInDirection:BTRightDirection];

// Set up and start the animation
[UIView beginAnimations:@"cover" context:NULL];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:BTSCREEN_ANIMATION_TIME];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(coverIncomingViewConclusion:finished:context:)];
incomingView.transform = CGAffineTransformIdentity;
self.outgoingView = outgoingView;   // Remember the outgoing view
[UIView commitAnimations];

方法affineTransformForTransationInDirection:是一个帮助程序,它知道屏幕的宽度和高度,并返回适合该方向的变换。这样做是为了从左侧进入:

CGAffineTransformMakeTranslation(-FHScreenWidth(), 0.0);