iOS:13.1.2 Xcode:11.1(11A1027)
在选项卡栏中,我们选择对选项卡项目使用透明文本,因此在iPhone中,我们仅显示选项卡项目图像,而文本是不可见的(并且应该仅在iPad上可见),我们通过调用:
extension UITabBarItem {
func updateTitleVisibility(for traitCollection: UITraitCollection) {
switch traitCollection.horizontalSizeClass {
case .compact:
hideTabBarTitle()
default:
showTabBarTitle()
}
}
func hideTabBarTitle() {
imageInsets = UIEdgeInsets(top: 6, left: 0, bottom: -6, right: 0)
setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.clear], for: .normal)
setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.clear], for: .selected)
}
func showTabBarTitle() {
imageInsets = .zero
setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.licorice], for: .normal)
setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.secondaryBlue], for: .selected)
}
}
在为iOS 13编译我们的应用程序(iOS 12上没有发生)时,发生了奇怪的行为(请注意选项卡栏):
(^我没有设法将其嵌入帖子中)
因此,呈现全屏视图控制器后,非活动选项卡的选项卡文本突然显示,但是当检查视图调试器时足够令人难以置信应该透明的标签是确实透明的
有人看到过这样的行为吗?我该如何解决
答案 0 :(得分:1)
好吧,这是由于iOS 13在默认暗模式下的行为所致。
要实现标签所需的功能,如iOS 13以下的版本
只需将其添加到您的Info.plist中:
<key>UIUserInterfaceStyle</key>
<string>Light</string>
这实际上是将全局用户界面样式更改为light样式,这是iOS 13以下版本的默认样式。
如果您不想更改用户界面样式,还可以在选项卡栏上更改未选中项目的色调颜色:
tabBar.unselectedItemTintColor = .darkGray
或您选择的其他任何色调。