Название iPhone XR iOS 12 UITabBarItem накладывается на верхнюю часть картинки - PullRequest
0 голосов
/ 05 марта 2019

As you can see from the picture, the title overlap on top of the picture

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

enter image description here

И я использовал оригинальный компонент 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. Это хорошо работает, когда пользователь выбирает Стандартный дисплей

1 Ответ

0 голосов
/ 13 марта 2019

Решение:

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
}
...