【问题标题】:iPhone XR iOS 12 UITabBarItem title overlap on top of the pictureiPhone XR iOS 12 UITabBarItem 标题重叠在图片上方
【发布时间】:2019-03-04 23:42:37
【问题描述】:

该问题仅发生在 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. 用户选择标准显示效果很好

【问题讨论】:

    标签: uitabbar uitabbaritem 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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      • 1970-01-01
      • 1970-01-01
      • 2019-06-13
      • 2020-02-04
      • 1970-01-01
      相关资源
      最近更新 更多