1

我有可以以纵向或横向模式启动的应用程序。主屏幕上的控件看起来会有所不同,具体取决于应用程序的模式。

这就是问题所在 - 如果我以横向模式启动应用程序,控件不在它们应该在的位置,它们会保留它们的位置,就像应用程序是纵向模式一样。我试图对此进行一些测试,这就是我发现的-

在 viewDidLoad 和 ViewWillappear 中,我得到了应用程序处于纵向模式的信息,尽管应用程序是横向模式。在视图中确实出现了它设置为正确的值 - 横向模式。问题是我希望在视图出现之前将这些组件设置在正确的位置上(如果我不能清楚地看到它们在屏幕上重新定位)。

处理这个问题的正确方法是什么?

编辑:在 viewDidLoad 和 ViewWillAppear 中,我称之为:

orientation = [self getOrientation];
if (orientation == OrientationsLandscape) {
    NSLog(@"Landscape");
}
else {
    NSLog(@"Portrait");
}

这是[getOrientation]的实现

 - (int) getOrientation {
    int currentOrientation = [UIApplication sharedApplication].statusBarOrientation;
    if (UIInterfaceOrientationIsPortrait(currentOrientation)) return OrientationsPortrait;
    else return OrientationsLandscape;
}

和枚举定义:

typedef enum {
     OrientationsLandscape = 0,
     OrientationsPortrait
} Orientations;

现在,如果设备是横向模式并且我尝试安装我的应用程序,我将打印 2 次“纵向”,而不是“横向”

4

2 回答 2

1

尝试这个:

[UIApplication sharedApplication].statusBarOrientation
于 2012-03-29T13:20:00.217 回答
0

同样重要的是,确保您正确设置了autoresizingMask所有 UI 元素的属性。其次,当我遇到这个问题时,我在 init 方法中修复了它。在初始化中,您应该像 SVGreg 建议的那样控制 iPad 方向,然后为您的 UI 元素设置正确的框架。

于 2012-03-29T15:03:05.333 回答