横向模式下的 TabBar 问题

Posted

技术标签:

【中文标题】横向模式下的 TabBar 问题【英文标题】:TabBar Issue in LandScapeMode 【发布时间】:2020-04-08 07:05:22 【问题描述】:

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

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

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

【问题讨论】:

您是否在标签栏项中为title 设置了任何自定义偏移量? 是的,我使用它进行了检查,但标题的自定义偏移量并不适用于所有 ios 设备。我想在 iPad 和 iPhone 上都用这个 【参考方案1】:

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

    如果你的应用不支持暗模式(我的意思是你禁用暗模式)那么你需要添加这个方法

    -(UITraitCollection *)traitCollection 
            if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
                   return [super traitCollection];
            else
                   return [UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassCompact];
            
    
    

    如果您的应用程序支持暗模式,那么您需要添加此方法

    -(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;
        
    
    

它可以解决这个问题。谢谢。

【讨论】:

以上是关于横向模式下的 TabBar 问题的主要内容,如果未能解决你的问题,请参考以下文章

横向模式下的 UINavigationController 后退按钮问题?

横向模式下的启动屏幕

修复横向模式下的旋转问题

横向模式下的闪屏

如何快速修复横向模式下的约束?

横向模式下的presentViewController宽度