首页 > 解决方案 > LandScapeMode 中的 TabBar 问题

问题描述

我为 TabBar 创建了一个演示应用程序,其中我采用了一个 .xib,其中我添加了一个 UITabBar,并且我添加了两个 UITabBarItem。当我以纵向模式运行应用程序时,它工作正常并且设计看起来不错。在纵向模式设计如下所示

在此处输入图像描述

但是当我将设备旋转到横向时,图像和标题对齐发生了变化,它显示不正确,横向模式图像如下所示

在此处输入图像描述

你能建议我解决这个问题吗?注意 - 我没有使用 TabBarController,只有 TabBar 和 TabBarItems

标签: iosobjective-cxibuitabbaruitabbaritem

解决方案


我找到了这个问题的解决方案,你想在你的 viewController.m 文件中添加一个方法,它有一个 TabBar。

  1. 如果您的应用程序不支持暗模式(我的意思是您禁用暗模式),那么您需要添加此方法

    -(UITraitCollection *)traitCollection {
            if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
                   return [super traitCollection];
            }else{
                   return [UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassCompact];
            }
    }
    
  2. 如果您的应用程序支持暗模式,那么您需要添加此方法

    -(UITraitCollection *)traitCollection {
         if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
              return [super traitCollection];
         }else{
              UITraitCollection *superSizeClass = [super traitCollection];
              UITraitCollection *verticalSizeClass = [UITraitCollection traitCollectionWithVerticalSizeClass:UIUserInterfaceSizeClassRegular];
    
              NSArray *combinedTraitArray = [NSArray arrayWithObjects: superSizeClass,verticalSizeClass, nil];
    
              UITraitCollection *combinedTraits = [UITraitCollection traitCollectionWithTraitsFromCollections: combinedTraitArray];
              return combinedTraits;
        }
    }
    

它将适用于这个问题。谢谢。


推荐阅读