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

问题描述 投票:0回答:1

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. 当使用选择标准显示时,它运作良好
uitabbar uitabbaritem iphone-xr
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
}
© www.soinside.com 2019 - 2024. All rights reserved.