带 2 XIB 的旋转纵向横向
Posted
技术标签:
【中文标题】带 2 XIB 的旋转纵向横向【英文标题】:Rotation Portrait Landscape with 2 XIB 【发布时间】:2009-10-17 06:19:21 【问题描述】:我有 2 个 GUI 和 2 个控制器 1个叫landscapeguicontroller,2个叫highguicontroller。
现在我通常调用 highguicontroller,当我旋转我的 iphone 时,它会检测到它,然后它会显示 Landscapeguicontroller: 代码:
landscapeguicontroller *neu =[[landscapeguicontroller alloc] initWithNibName:nil bundle:nil];
[self presentModalViewController:neu animated:YES];
[self dismissModalViewControllerAnimated:YES];
问题是,然后动画将新窗口从 iphone 的另一侧向上推到窗口中。
在 Landscapeguicontroller 中,我添加了以下几行:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
return (interfaceOrientation == UIInterfaceOrientationPortrait);
当我想回到我调用的 highguicontroller 时:
[self dismissModalViewControllerAnimated:YES];
一切正常,但就在第二个动画中,我看到了正确的“旋转动画”。 你有什么建议吗?
所以一个简短的问题描述: 1.动画中从高处到风景,风景被推入窗口 但是在2.从横向到高处的动画中,旋转看起来像真正的旋转......
我希望 1.animation 看起来像 2.animation
最好的问候 Ploetzeneder
【问题讨论】:
【参考方案1】:为避免“问题是动画将新窗口从 iphone 的外侧向上推到窗口中。”,尝试将视图控制器的 modalTransitionStyle 属性设置为以下之一,无论您喜欢什么: 类型定义枚举 UIModalTransitionStyleCoverVertical = 0, UIModalTransitionStyleFlipHorizontal, UIModalTransitionStyleCrossDissolve, UIModalTransitionStyle;
另外,如果你想避免动画旋转,你可以设置你的 shouldRotate... 方法以禁止其他方向,然后设置为在设备物理改变方向时接收通知,并在适当的方向。有关此示例,请参阅 Apple 的“AlternateViews”示例代码。
通知反映了设备的物理方向,无论界面是否允许更改,您都可以收到通知。 (您可以查看 UIApplications 的 statusBarOrientation 属性以了解 UI 的方向)。
【讨论】:
【参考方案2】:听起来你希望序列是这样的:
-
将设备从纵向物理旋转到横向
将纵向视图 (
highguicontroller
) 动画化为横向
将横向视图 (landscapeguicontroller
) 从屏幕的新“底部”向上推
如果正确,您需要在 highguicontroller
实现中包含以下内容:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
return interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown;
这将处理第 2 步(它将纵向视图旋转到任一方向的横向视图)。
那么你会想要这样的东西:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
if(fromInterfaceOrientation == UIInterfaceOrientationPortrait)
[self presentModalViewController:landscapeguicontroller animated:YES];
else
[self dismissModalViewControllerAnimated:YES];
这应该在旋转动画完成后呈现横向视图,然后在设备旋转回纵向后将其关闭。
希望有帮助!
【讨论】:
以上是关于带 2 XIB 的旋转纵向横向的主要内容,如果未能解决你的问题,请参考以下文章
禁止 UITableViewcontroller 横向旋转(保持纵向)