更改iPad方向、旋转状态栏、工具栏,但不更改主视图

更改iPad方向、旋转状态栏、工具栏,但不更改主视图,ipad,uiview,ios,rotation,orientation,Ipad,Uiview,Ios,Rotation,Orientation,我正在尝试建立一个基于窗口的iPad测试应用程序,在这里我有一个单视图控制器和一个单视图。当我旋转iPad时,我想改变工具栏的方向,而不是视图本身的方向。例如,您使用的某种背景视图固定在设备上,但状态栏和工具栏围绕设备旋转。这将使用户能够从所有角度处理视图,但始终使用正确定向的工具集 我想要的东西的一个漂亮的实现可以在iPad刷子应用程序中找到,在这个应用程序中,绘画的方向被锁定在设备上,工具栏围绕着它旋转。我认为其他绘画应用程序也做同样的事情 我一直在想如何做到这一点,但在用尽了很多其他关于方

我正在尝试建立一个基于窗口的iPad测试应用程序,在这里我有一个单视图控制器和一个单视图。当我旋转iPad时,我想改变工具栏的方向,而不是视图本身的方向。例如,您使用的某种背景视图固定在设备上,但状态栏和工具栏围绕设备旋转。这将使用户能够从所有角度处理视图,但始终使用正确定向的工具集

我想要的东西的一个漂亮的实现可以在iPad刷子应用程序中找到,在这个应用程序中,绘画的方向被锁定在设备上,工具栏围绕着它旋转。我认为其他绘画应用程序也做同样的事情

我一直在想如何做到这一点,但在用尽了很多其他关于方向的问题后,我仍然不知所措

有人能给我指出一个简洁的解决方案的正确方向吗?autoresizeMask的特定autoresizes组合?用另一个相反方向的动画对抗旋转动画?使用多个并发视图控制器,一个用于旋转视图,一个用于非旋转视图

我非常感谢


(编辑:在Olie的评论之后,试图澄清问题。)

为了防止旋转,您应该将其放在视图控制器中。m:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

但是您说您仍然希望根据旋转调整图幅的大小。我自己没有必要这样做,所以我不确定仅仅将
自动重新设置为具有灵活的宽度和高度是否足够;您可能还必须实现
didRotateFromInterfaceOrientation:
,并使用
setNeedsLayout
和/或手动调整视图大小。

为了防止旋转,您应该将其放在视图控制器的.m:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

但是您说您仍然希望根据旋转调整图幅的大小。我自己没有必要这样做,所以我不确定仅仅将
自动重新设置为具有灵活的宽度和高度是否足够;您可能还必须实现
didRotateFromInterfaceOrientation:
并使用
setNeedsLayout
和/或手动调整视图大小。

就我的工作范围而言,我看不到您问题的任何简单答案。旋转所有东西(选项卡栏、导航栏和状态栏、视图控制器),然后在“旧坐标”中重新绘制视图控制器的内容,这样对用户来说,它看起来就好像没有旋转一样,怎么样?

就我的工作范围而言,我看不到对您的问题的任何简单答案。旋转所有内容(选项卡栏、导航栏和状态栏、视图控制器),然后在“旧坐标”中重新绘制视图控制器的内容,怎么样因此,对于用户来说,它看起来好像没有旋转?

我有一个bug在不久前做了这件事——我非常确定,你所问的问题会让你得到苹果的高度拒绝。然而,我将尝试记住问题是什么。我很确定是这样的:

我有一个tabbarViewController,上面写着“我定向到任何方向。”

其中一个标签是一个普通的老UIViewController,上面写着“我只做景观左视图和左视图右视图”

旋转时,内部(UIVC)保持不变,但外部(TabVC)围绕对象旋转

我可能会把一些细节倒回去或者弄得很复杂,但总的想法是:堆叠的风投,而不是所有的风投


祝你好运

不久前我有一个bug做了这件事——我很肯定你的提问会让你从苹果得到一个高违规率的拒绝。然而,我将尝试记住问题是什么。我很确定是这样的:

我有一个tabbarViewController,上面写着“我定向到任何方向。”

其中一个标签是一个普通的老UIViewController,上面写着“我只做景观左视图和左视图右视图”

旋转时,内部(UIVC)保持不变,但外部(TabVC)围绕对象旋转

我可能会把一些细节倒回去或者弄得很复杂,但总的想法是:堆叠的风投,而不是所有的风投


祝你好运

感谢您的响应,但是控制单个视图的旋转并不是这里的问题。我想要的是保持主视图固定,当方向改变时,状态栏和工具栏围绕主视图旋转。要使整个屏幕旋转或不旋转都是小菜一碟,当前的问题是同一屏幕不同部分的旋转行为不同。感谢您的响应,但控制单个视图的旋转在这里并不是问题。我想要的是保持主视图固定,当方向改变时,状态栏和工具栏围绕主视图旋转。要使整个屏幕旋转或不旋转都是微不足道的,当前的问题是同一屏幕不同部分的旋转行为不同。谢谢您的回答。事实上,我不久前就让它开始工作了。有人向我指出了解决方案:在视图控制器的
-loadView
方法中,使用
UIWindow
-insertSubview:belowSubview:
方法,在导航控制器的视图下方插入非旋转视图。完全正确。啊,给你。非常类似的想法,您只是将第二个视图附加到窗口,而我将视图控制器堆叠在一起。一般来说,我倾向于尝试在窗口中只有一个视图(带有视图控制器),然后所有其他子视图都从该视图中删除。我不知道为什么,但我觉得它“更干净”。不管怎样,你的方式是有效的,并不可怕,这才是最重要的。谢谢你的回答。事实上,我不久前就让它开始工作了。有人向我指出了解决方案:在视图控制器的
-loadView
方法中,使用
ui窗口
?