这是我在这里的第一篇文章,我对 iPhone 开发还很陌生,所以请多多包涵。
我有一个应用程序,它有几个 View Controller ,每个 View Controller 都有几个它控制的 nib 文件,一些 nib 有多个 View 。整个应用程序都有一个工具栏,由 Root View Controller 控制。
经过大量搜索,我在每个屏幕上都可以进行旋转,只有一个屏幕除外。我没有让它们以正确的方向加载,但我想这是另一个问题。
在我的具有多个 View 的 Nib 中,我只能在原始主视图上选择自动调整大小选项。在我使用 insertSubview 加载的已添加 View 上,我可以选择固定边距选项,但不能选择宽度和高度大小调整选项。我正在使用 Xcode 4。
我的第一个问题是,为什么我无法在其他 View 上选择调整大小选项?
抱歉,我不得不删除我放在这里的图片,以显示我的意思,以便能够发布。
无论如何,这不是我的主要问题,出于好奇,我只是想知道为什么我不能选择调整大小选项。我在代码中找到了解决方法。在加载 subview 的函数中,我添加了 [viewName setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];
例如,要加载我命名为 shiftStart 的 View ,我使用:
- (IBAction)loadShiftStart:(id)sender {
[self clearView];
[self.view insertSubview:shiftStart atIndex:0];
[shiftStart setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];
}
现在我的问题来了。我有一个有 3 个 View 的 nib 文件,view 是首先加载的主视图,rotaStart,当按下第一个 View 上的按钮时作为 subview 加载,shiftStart,当第一个按钮上的按钮加载时作为 subview 加载 View 被按下。 rotaStart 和 shiftStart 几乎相同,有一个标题、一个文本 block 、一个是按钮和一个否按钮。唯一的区别是框中的文本,以及如果您单击"is"或“否”按钮将加载哪个 View 。
我在 Xcode 中为标题、文本 block 和按钮选择了所有相同的调整大小和边距选项,据我所知,加载它们的代码是相同的(见下面的代码),但 shiftStart 旋转正确而 rotaStart 则没有。
- (IBAction)loadRotaStart:(id)sender {
[self clearView];
[self.view insertSubview:rotaStart atIndex:0];
[rotaStart setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];
}
- (IBAction)loadShiftStart:(id)sender {
[self clearView];
[self.view insertSubview:shiftStart atIndex:0];
[shiftStart setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];
}
谁能告诉我为什么 rotaStart 不旋转,当手机切换到横向时?
抱歉,这个解释有点啰嗦。我不确定还能如何解释。
谢谢
最佳答案
对于其他有类似问题的人,@longball为我解决了。不知何故,我设法在基本 View 的顶部添加了第二个 View ,并带有标签和按钮。删除额外的 View 解决了这个问题。
关于iPhone 多 View 旋转 hell ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7970160/