iPhone导航栏的纵向高度保持较短

iPhone导航栏的纵向高度保持较短,iphone,rotation,uinavigationbar,transform,orientation,Iphone,Rotation,Uinavigationbar,Transform,Orientation,我的应用程序的根视图控制器支持任何方向,但用户可以导航到另一个仅支持横向方向的视图控制器 基本问题是,无论设备的实际物理方向如何,当用户弹出到根视图控制器时,导航栏的高度将适合于横向模式。我想弄清楚如何让导航栏以44(纵向高度)而不是32(横向高度)的高度显示 尽管导航栏未设置为正确的高度,但根视图控制器的UITableView已正确偏移(距屏幕顶部44像素) 在第二个视图控制器的内部,将显示-viewwill:I执行标准旋转变换: if (deviceOrientation == UIDevi

我的应用程序的根视图控制器支持任何方向,但用户可以导航到另一个仅支持横向方向的视图控制器

基本问题是,无论设备的实际物理方向如何,当用户弹出到根视图控制器时,导航栏的高度将适合于横向模式。我想弄清楚如何让导航栏以44(纵向高度)而不是32(横向高度)的高度显示

尽管导航栏未设置为正确的高度,但根视图控制器的UITableView已正确偏移(距屏幕顶部44像素)

在第二个视图控制器的内部,将显示-viewwill:I执行标准旋转变换:

if (deviceOrientation == UIDeviceOrientationPortrait)
   {
   UIScreen *screen = [UIScreen mainScreen];
   CGFloat screenWidth = screen.bounds.size.width;
   CGFloat screenHeight = screen.bounds.size.height;
   UIView *navView = [[self navigationController] view];
   navView.bounds = CGRectMake(0, 0, screenHeight, screenWidth);
   navView.transform = CGAffineTransformIdentity;
   navView.transform = CGAffineTransformMakeRotation(degreesToRadians(90));
   navView.center = CGPointMake(screenWidth/2.0, screenHeight/2.0);
   [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight];
   }
由于此辅助视图控制器允许导航到从属视图控制器(以及弹出到根视图控制器),因此我已将以下内容添加到-viewWillEnglish:

if (deviceOrientation == UIDeviceOrientationPortrait)
   {
   UIScreen *screen = [UIScreen mainScreen];
   CGFloat screenWidth = screen.bounds.size.width;
   CGFloat screenHeight = screen.bounds.size.height;
   UIView *navView = [[self navigationController] view];
   navView.bounds = CGRectMake(0, 0, screenWidth, screenHeight);
   navView.transform = CGAffineTransformIdentity;
   navView.center = CGPointMake(screenWidth/2.0, screenHeight/2.0);
   [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];
   }

感谢您提供有关如何强制重新计算导航栏高度的建议。

不确定是否有更好的方法,但这很有效:

[[self navigationController] setNavigationBarHidden:YES animated:NO];
[[self navigationController] popViewControllerAnimated:YES];
[[self navigationController] setNavigationBarHidden:NO animated:NO];

基本上,隐藏导航栏,弹出视图控制器并显示导航栏。某个地方的一些代码可以调整导航条的高度,一切都很好。

非常感谢,我能让它在ios6中再次工作的唯一方法是ios10呢?“我曾经面对过这个问题,但解决方案不起作用。”斯拉夫乔。很抱歉我没有答案。我已经有一段时间没有在iOS上工作了。