Название 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:
Проблема не может быть воспроизведена на симуляторе, только на физическом устройстве.
Интересно то, что он хорошо работает на одном 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
}