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

use*_*146 5 iphone modal-dialog objective-c

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

UIModalTransitionStyleCoverVertical从底部有新的视图幻灯片,所以我天真地认为会有一个水平对应物,但我在文档中找不到一个.

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

没有UINavigationController的包袱,有没有其他方法可以做到这一点?思考?

TKS!

Ste*_*ler 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];
Run Code Online (Sandbox Code Playgroud)

affineTransformForTransationInDirection: 方法是一个帮助器,它知道屏幕的宽度和高度并返回适合该方向的变换。从左侧移入时会执行此操作:

CGAffineTransformMakeTranslation(-FHScreenWidth(), 0.0);
Run Code Online (Sandbox Code Playgroud)