无法在 iOS 13 中设置 UITabBar shadowimage

Posted

技术标签:

【中文标题】无法在 iOS 13 中设置 UITabBar shadowimage【英文标题】:Can't set UITabBar shadowimage in iOS 13 【发布时间】:2019-09-23 06:02:00 【问题描述】:

升级到 ios 13 后,出现了几个标签栏相关的问题。我已经修复了大部分,但剩下的一个无法覆盖标签栏的阴影图像。以下代码适用于 iOS 12 及更低版本:

[[UITabBar appearance] setShadowImage:[UIImage imageName:@"CustomTabBarShadowImage"]];

我试图通过设置新的“standardAppearance”属性来覆盖它。这确实有效,但我在我的应用程序中使用了自定义字体,无论我做什么,tabbaritem 标题似乎都被限制在标签图标的宽度内,因此被切断了。

请留下 2 个问题:

    任何想法如何在不使用标准外观的情况下在 iOS 13 中获取自定义标签栏阴影图像? 如何防止 tabbaritem 标题在使用自定义字体时被截断? (请注意,我使用新的 UITabBarItemStateAppearance 方法设置它们)

PS:至于第 1 点,我找到了一个解决方法 - 我只是在标签栏上添加了一个带有框架 CGRectMake(0, -0.5, [UIScreen mainScreen].bounds.size.width, 0.5) 的 uiview - 丑陋但它可以工作。

【问题讨论】:

PS 对于在 iOS13 中遇到其他 uitabbar 问题的任何人,我的 tabbaritems 的文本颜色也丢失了。我发现了一个解决这个问题的方法:[[UITabBar appearance] setUnselectedItemTintColor:colorTabBarItem]; 似乎文本被截断是一个错误,我尝试设置不同的段落样式和其他东西,但没有任何帮助,标签的宽度太小。我已使用反馈助手报告了该问题,并将在此处报告进度。 【参考方案1】:

在 UITabBarController 中设置,复制 standardAppearance

if #available(iOS 13.0, *) 
    let copy             = tabBar.standardAppearance.copy()
    copy.backgroundImage = backgroundImage
    copy.shadowImage     = onePtImage
    copy.stackedLayoutAppearance.normal.titlePositionAdjustment = .init(horizontal : 0, vertical : -4)
    tabBar.standardAppearance = copy

【讨论】:

以上是关于无法在 iOS 13 中设置 UITabBar shadowimage的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 9.0 中设置 UITabBar 未选中的 ItemTintColor

在 UITabBar 背景中设置渐变

jQuery .height 方法无法在 iOS Safari 中设置高度

UITabBar 未在 ios 7 中显示所选项目图像

无法在 UWP 中设置 SQLite 对象 - Xamarin Forms

在 ios 13 中设置 bounds.height 不再起作用