У меня есть «классическое приложение» с 3 ViewController и tabBar, которые я использую для изменения ViewController.
В моем первом ViewController у меня есть кнопка, которая отображает UIView на всех экранах, поэтому я скрываюtabBar с этим setTabBarVisible func:
extension UIViewController
{
func setTabBarVisible(visible: Bool, animated: Bool)
{
//* This cannot be called before viewDidLayoutSubviews(), because the frame is not set before this time
// bail if the current state matches the desired state
if (isTabBarVisible == visible) { return }
// get a frame calculation ready
let frame = self.tabBarController?.tabBar.frame
let height = frame?.size.height
let offsetY = (visible ? -height! : height)
// zero duration means no animation
let duration: TimeInterval = (animated ? 0.3 : 0.0)
// animate the tabBar
if frame != nil
{
UIView.animate(withDuration: duration)
{
self.tabBarController?.tabBar.frame = frame!.offsetBy(dx: 0, dy: offsetY!)
return
}
}
}
var isTabBarVisible: Bool
{
return (self.tabBarController?.tabBar.frame.origin.y ?? 0) < self.view.frame.maxY
}
}
Работает, tabBar скрыт, и я вижу все свои UIVIew.Проблема в том, что у меня UILabel внизу UIView (там, где я обычно отображаю tabBar), и я не могу использовать TapGesture на своей UILabel, ничего не происходит.(если я отображаю метку где-то еще, UITapGesture работает хорошо.)
Я попытался установить zPosition моего tabBar на 0 и zPosition моего UIView на 1, но это тоже не работает.
Как я могу получить ярлык кликабельным в нижней части моего обзора?