0

从图片中可以看出,标题重叠在图片的顶部

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

在此处输入图像描述

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

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

更新:

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

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

更新:

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

  2. 当使用选择标准显示时效果很好

4

1 回答 1

0

解决方案是;

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
}
于 2019-03-12T23:25:42.597 回答