Название iPhone XR iOS 12 UITabBarItem накладывается на верхнюю часть картинки

Проблема возникает только на iPhone XR, она хорошо работает на всех других устройствах iPhone.

И я использовал оригинальный компонент UITabBar, а не настроенный

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

Upate:

  1. Проблема не может быть воспроизведена на симуляторе, только на физическом устройстве.

  2. Интересно то, что он хорошо работает на одном iPhone XR, имеет проблему на другом iPhone XR

Обновить:

  1. Пользователь, у которого есть проблема, открывает функцию масштабирования дисплея

  2. Это хорошо работает, когда использование выбрать стандартный дисплей

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
}
Другие вопросы по тегам