我有可以以纵向或横向模式启动的应用程序。主屏幕上的控件看起来会有所不同,具体取决于应用程序的模式。
这就是问题所在 - 如果我以横向模式启动应用程序,控件不在它们应该在的位置,它们会保留它们的位置,就像应用程序是纵向模式一样。我试图对此进行一些测试,这就是我发现的-
在 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 次“纵向”,而不是“横向”