无法在 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
jQuery .height 方法无法在 iOS Safari 中设置高度