如何在 iOS 13 中隐藏带有动画的标签栏?
Posted
技术标签:
【中文标题】如何在 iOS 13 中隐藏带有动画的标签栏?【英文标题】:How to hide the tab bar with animation in iOS 13? 【发布时间】:2019-12-01 19:03:29 【问题描述】:在我的 tabBarController 中,我使用这两种方法来隐藏/显示 tabBar:
func showTabBar()
tabBar.isHidden = false
UIView.animate(withDuration: 0.3)
self.tabBar.transform = .identity
func hideTabBar()
UIView.animate(withDuration: 0.3, animations:
self.tabBar.transform = CGAffineTransform(translationX: 0, y: self.tabBar.frame.height)
, completion: _ in
self.tabBar.isHidden = true
)
这在 ios 12 及更低版本中运行良好,但在 iOS 13 中,当应用转换时,整个 tabBar 被破坏(见图)。我知道您可以使用帧动画隐藏 tabBar,但应用转换要容易得多,我不明白为什么会出现这种情况以及 iOS 13 中的哪些更改导致其无法正常工作。
【问题讨论】:
您找到解决方案了吗?我也有同样的问题... @benjamin 还没有。显然,您不能在 iOS 13 标签栏上使用转换。你有两个选择:要么用帧动画实现它,要么使用内置的 hidesBottomBarWhenPushed 功能。 好的,谢谢。我用他们的反馈助手向 Apple 发送了一条消息。我希望他们能帮助我们...... 【参考方案1】:tabbar 的'transform' 属性目前在 iOS 13 中不工作,也许稍后会工作。
隐藏标签栏时,您只需按住标签栏的最后一帧。
显示标签栏:-
func showTabbar(_ tabBarController: UITabBarController?, _ lastTabBarFrame: CGRect?)
if #available(iOS 13, *)
UIView.animate(withDuration: 0.3, animations:
tabBarController?.tabBar.frame = lastTabBarFrame ?? .zero
, completion: (_) in
)
else
UIView.animate(withDuration: 0.3, animations:
tabBarController?.tabBar.transform = .identity
, completion: (_) in
)
隐藏标签栏:-
func hideTabbar(_ tabBarController: UITabBarController?, _ lastTabBarFrame: CGRect?, _ view: UIView)
if #available(iOS 13, *)
UIView.animate(withDuration: 0.3, animations:
tabBarController?.tabBar.frame = CGRect(x: 0, y: view.bounds.height + (lastTabBarFrame?.height ?? 0.0) + 20, width: lastTabBarFrame?.width ?? 0.0, height: lastTabBarFrame?.height ?? 0.0)
) (_) in
else
UIView.animate(withDuration: 0.3, animations:
tabBarController?.tabBar.transform = CGAffineTransform(translationX: 0, y: tabBarController?.tabBar.frame.height ?? 0.0)
) (_) in
使用方法:-
var lastTabBarFrame: CGRect?
self.lastTabBarFrame = self.tabBarController?.tabBar.frame
hideTabbar(self.tabBarController, self.lastTabBarFrame, self.view)
showTabbar(self.tabBarController, self.lastTabBarFrame)
【讨论】:
以上是关于如何在 iOS 13 中隐藏带有动画的标签栏?的主要内容,如果未能解决你的问题,请参考以下文章