我正在使用objective-c(很明显,我猜)并且我想知道是否有一种(简单)方式来呈现模态视图但是让视图从屏幕右侧滑入。
UIModalTransitionStyleCoverVertical 让新视图从底部滑入,所以我天真地认为会有一个水平对应物,但我在文档中找不到。
我不是指 UIModalTransitionStyleFlipHorizontal (我不想要3D翻转)。
如果没有UINavigationController的包袱,还有其他办法吗?想法?
TKS!
答案 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);