在 UITabBar 中设置背景图像的问题

Posted

技术标签:

【中文标题】在 UITabBar 中设置背景图像的问题【英文标题】:Issue in setting background image in UITabBar 【发布时间】:2020-04-17 07:02:34 【问题描述】:

我正在尝试在 UITabBar 中设置背景图像。标签栏和背景图像的高度为 49 像素。它适用于除 iPhone X 及更高版本之外的所有设备。在 iPhone X 中,图像仅被部分填充,确切地说是总高度的 49 像素。

为了解决这个问题,我增加了图像高度,使其完全适合 iPhone X 设备。它也适用于在 ios 13 中运行的 iPhone 8 设备(将原始背景图像调整为 49 像素),不幸的是,在 iPhone 8 的 iOS 12 版本中它会中断并且显示背景图像在它的确切高度。

有人知道为什么会这样吗?这个问题有解决办法吗?

【问题讨论】:

【参考方案1】:

UITabBar 非常反复无常。如果您确实为每种尺寸的标签栏找到了解决方案,您应该使用extension,它可以让您轻松检测设备类型。

之后就可以使用switch了:

switch UIDevice().type 
    case .iPhone4, .iPhone4S, .iPhone5, .iPhone5C, .iPhone5S, .iPhone6, .iPhone6S, .iPhone6Plus, .iPhone6SPlus, .iPhone7, .iPhone7Plus, .iPhone8, .iPhone8Plus:
        imageView.contentMode = .scaleAspectFill
    case .iPhoneX, .iPhoneXR, .iPhoneXS, .iPhoneXSMax, .iPhone11, .iPhone11Pro, .iPhone11ProMax:
        imageView.contentMode = .scaleAspectFit
    default:
        ()
    

您可以为您的图像使用任何特定的自定义或在此块内使用不同的图像。

希望有帮助!

【讨论】:

感谢您的回答,但我想知道除了根据设备类型自定义图像之外是否还有其他解决方案?我的要求非常简单,只是在不破坏不同操作系统和设备版本上的 UI 的情况下向 UITabBar 添加背景图像,我很确定开发人员以前遇到过这种类型的要求。对此没有直接的解决方案,这很奇怪。

以上是关于在 UITabBar 中设置背景图像的问题的主要内容,如果未能解决你的问题,请参考以下文章

在 UITabBar 背景中设置渐变

UITabbar ios的背景图

在 IrfanView 中设置透明图像背景

如何在颤动中设置背景图像?

iOS 模拟器使用模板渲染模式在透明图像上显示白色背景

如何在 QWebEngineView 中设置背景图像 [重复]