当我们在 iOS13 中将设备设置为横向模式时,UITabBarItem 标题文本未居中对齐

UITabBarItem Title Text Not Align Centrally, When We Set Device in Landscape Mode in iOS13

我正在我的 Objective-C iOS 应用程序中动态实现 TabBar。在那里,所有 TabBarItem 标题在纵向模式下正确显示,但是当我在横向模式下旋转设备时,TabBarItem 标题位置没有显示在中央。

这里附上我的TabBar竖屏截图

当我旋转设备时,显示标题对齐问题如下所示

为了解决这个问题,我在这里找到了一个解决方案:

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

如果我使用这个解决方案,那么它在 LandScape 模式下工作正常,但是当我在我的代码中添加这个方法时,它在我的 ViewController.

中停止了暗模式支持

所以我想正确对齐到 LandScape 模式,我也想在我的 ViewController 中支持黑暗模式。

注意:此问题仅在 iOS13 设备中发生,并且仅在 iPhone 中发生(在所有 iPhone 设备中低于 iOS13,它工作正常并且在iPad,它在任何 iOS 版本中都可以正常工作。)

任何人你能帮帮我吗?任何帮助都是感激的。谢谢

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

如果您的应用程序支持深色模式,那么您需要添加此方法,它将适用于所有 iOS 设备

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

它会解决这个问题。谢谢