cae*_*314 28 iphone transition modal-dialog objective-c uiview
在Apple官方的iPhone地图应用程序中,右下角有一个小的"页面卷曲"按钮.按下它时,地图本身会向后剥离以显示一些选项.我想在我自己的应用程序中复制此效果.
我正在尝试使用UIModalTransitionStylePartialCurl(在SDK 3.2中添加).就其布局而言,我的应用程序几乎完全类似于Apple的官方地图应用程序.我可以轻松地将整个屏幕剥离,露出下面的另一个视图,但我不想要这个.我只想让地图视图剥离.
要创建此效果,您必须具有将执行转换的UIViewController.如果我将这个UIViewController的视图设置为屏幕上某个不占用整个屏幕的小子视图,我可以将该子视图剥离.那很棒!但是,在转换的第二部分(当页面重新放回原位)之后,视图永远不会从它们开始的位置开始.剥离的视图将从其原始位置移开,或者显示的视图将扩展为占据整个屏幕.
我有没有明显的错误?我真的很感激任何帮助!
我正在使用的代码非常简单.它基本上只是:
underMapViewController.modalTransitionStyle = UIModalTransitionStylePartialCurl;
[curlableMapViewController presentModalViewController:underMapViewController animated:YES];
Run Code Online (Sandbox Code Playgroud)
Jor*_*rge 10
从文档:
UIModalTransitionStylePartialCurl当显示视图控制器时,当前视图的一个角向上卷曲以显示下面的模态视图.在解雇时,蜷缩的页面会在模态视图之上展开.使用此转换呈现的模态视图本身无法呈现任何其他模态视图.
仅当父视图控制器呈现全屏视图并且您使用UIModalPresentationFullScreen模式演示样式时,才支持此过渡样式.尝试为父视图或不同的表示样式使用不同的形状因子会触发异常.
虽然,我没有使用除全屏之外的其他演示文稿.我正在测试,我遇到了和你一样的问题.我发现如果我的ParentViewController的视图是ImageView,并且我将内容模式设置为UIViewContentModeCenter,则视图不会调整大小或移动.也许有一种解决方法是将当前视图保存为图像,将其置于顶部,进行卷曲,然后在关闭模式后,重新排列混乱的隐藏内容并删除顶部图像视图.我知道这听起来很疯狂,但如果我真的必须达到这个要求,那就是我会尝试的.
希望这会有所帮助,豪尔赫.
这样的事情怎么样:
[UIView beginAnimations:@"PartialPageCurlEffect" context:nil];
[UIView setAnimationDuration:0.3];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:myOldSubViewController.view cache:YES];
[myOldSubViewController.view addSubview:myNewViewController.view];
[UIView commitAnimations];
Run Code Online (Sandbox Code Playgroud)
注意:对于某些视图,如果视图复杂且偏离中心,则可能存在工件.更改cache:YES到cache:NO可以与修复.
正如cprcrack指出的那样,这并没有回答原来的问题.但是,这是有用的信息,所以考虑到这一点,我将把它留在这里.
这实际上比你想象的要简单得多.
我们将调用视图控制器MapViewController和SettingsViewController.你的问题是你想剥开部分的(只有部分)MapViewController显示SettingsViewController.
这是你如何做到的:
SettingsViewController.UIModalTransitionStylePartialCurl在它们之间进行转换,就像您现在一样.iOS会检测到你已经自动完成了这个操作,并且只能将MapViewController视图放回到视图的下半部分SettingsViewController,这是你所有内容的所在.
如果您将内容放在SettingsViewController视图的上半部分,iOS将会检测到该内容并将MapViewController视图全部剥离.
摘要:仅将内容放在新视图的下半部分.iOS会搞清楚.
(我不认为这在任何地方都有记录,对不起.)
我有一个轻微的打嗝混淆
.modalTransitionStyle
Run Code Online (Sandbox Code Playgroud)
和
.modalPresentationStyle
Run Code Online (Sandbox Code Playgroud)
第一个是TARGET viewController,例如你想要的那个.第二个是PARENT viewController,例如实际上被curl扭曲的那个.OP得到了这个权利,但我弄错了,在我弄明白之前的10分钟令人沮丧.把它扔在这个帖子上,以防它给别人一个我需要的头脑.
| 归档时间: |
|
| 查看次数: |
12634 次 |
| 最近记录: |