我正在构建模板应用。我在设备旋转/方向上遇到了一些问题。我的appDelegate中有以下内容:didFinishLaunching:
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
和我的VC viewDidLoad:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(deviceOrientationDidChange:) name:UIDeviceOrientationDidChangeNotification object:nil];
...
//add the title bar
titleBar = [[OAI_TitleBar alloc] initWithFrame:CGRectMake(0.0, 0.0, 1024.0, 50.0)];
titleBar.titleBarTitle = @"OAI Template";
titleBar.hasAccount = YES;
titleBar.hasReset = YES;
titleBar.hasHome = YES;
[titleBar buildTitleBar];
[self.view addSubview:titleBar];
这是我的deviceOrientationDidChange方法:
//rotate the vc view
if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation)) {
[self.view setFrame:CGRectMake(0.0, 0.0, 1024.0, 768.0)];
} else if (UIDeviceOrientationIsPortrait([UIDevice currentDevice].orientation)) {
[self.view setFrame:CGRectMake(0.0, 0.0, 768.0, 1024.0)];
}
//call the rotation management methods of various classes
[titleBar adjustForRotation:orientation];
}
旋转设备时,此工作正常,视图按预期调整。但是当应用程序启动时,x,y坐标是错误的 - 当我以纵向方向启动时记录框架时,VC视图的框架为{{0,20},{768,1004}},当以横向模式启动时是{{20,0},{748,1024}}
标题栏框架为{{20,0},{748,1024}},用于横向和纵向(就像我编码的那样)。
但是,我在模拟器和设备上看到的情况完全不同。您应该看到的是顶部有一个黑色条(高度为50像素左右),左侧有一个徽标,后面是一些按钮,然后应用程序标题右对齐。从下面的图片中可以看出,当应用程序以任一方向启动时,它的开启x / y坐标不在0/20附近。任何帮助,将不胜感激。
对我而言,当应用程序以横向方式启动时,它将显示为纵向,当它以纵向方式启动时,虽然显示屏是正确的,但它大约是20.0f左右。任何帮助,将不胜感激。
答案 0 :(得分:0)
解决了,我
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight;
}
在我的viewController中,确保正确的方向在我的plist中并且加载正常。