iPhone XR iOS 12 UITabBarItem 标题重叠在图片上方

Posted

技术标签:

【中文标题】iPhone XR iOS 12 UITabBarItem 标题重叠在图片上方【英文标题】:iPhone XR iOS 12 UITabBarItem title overlap on top of the picture 【发布时间】:2019-03-04 23:42:37 【问题描述】:

该问题仅发生在 iPhone XR 上,它适用于所有其他 iPhone 设备。

我使用的是原始的 UITabBar 组件,而不是自定义的

tabBarItem.titlePositionAdjustment.vertical = -10.0
tabBarItem.selectedImage = UIImage(named: imageName)
tabBarItem.title = barTitle
tabBarItem.image = UIImage(named: unSelectedImage)

更新:

    无法在模拟器上重现该问题,只能在物理设备上重现

    有趣的是,它在一部 iPhone XR 上运行良好,在另一部 iPhone XR 上出现问题

更新:

    有问题的用户打开显示缩放功能

    用户选择标准显示效果很好

【问题讨论】:

【参考方案1】:

解决办法是;

extension UIDevice 
var modelName: String 
    var modelID = ""
    #if targetEnvironment(simulator)
    modelID = ProcessInfo.processInfo.environment["SIMULATOR_MODEL_IDENTIFIER"] ?? ""
    #else
        var systemInfo = utsname()
        uname(&systemInfo)
        let machineMirror = Mirror(reflecting: systemInfo.machine)
        modelID = machineMirror.children.reduce("")  identifier, element in
            guard let value = element.value as? Int8, value != 0 else  return identifier 
            return identifier + String(UnicodeScalar(UInt8(value)))
        
    #endif

    return modelID
    

我使用 nativeScale 和 scale 参数来检测用户是否打开了显示缩放功能。

 if UIScreen.main.nativeScale > UIScreen.main.scale, UIDevice.current.modelName == "iPhone11,8" 
   // "iPhone11,8" for iPhone XR
  // do nothing here

 else 
   // for other devices
    tabBarItem.titlePositionAdjustment.vertical = -10.0

【讨论】:

以上是关于iPhone XR iOS 12 UITabBarItem 标题重叠在图片上方的主要内容,如果未能解决你的问题,请参考以下文章

iPhone XR 支持哪个版本的 Xcode

如何在 iOS 11 和 iPhone X 上实现隐藏 UITabBar 以显示 UIToolbar

UINavigationBar 和 UITabbar tintColor 在 iPhone6Plus 中不起作用

iOS App Icon启动图尺寸配置适配iPhone XS XR XS Max等

Unity 和 iPhone XR 的重磅漏洞(特别是)

从 UITabBar 按钮调用的 iPhone UIActionSheet