Ios 如何在屏幕外设置UITabBar动画,并识别它通常驻留的位置?

Ios 如何在屏幕外设置UITabBar动画,并识别它通常驻留的位置?,ios,objective-c,cocoa-touch,uitabbar,Ios,Objective C,Cocoa Touch,Uitabbar,禁止使用“按下时隐藏底部条形图” 我尝试过设置UITabBar的动画,使Y与self.view.bounds.frame.Y相同。在我的viewController中,我还有一个tableView,它具有从tableView到SuperView的底部约束。将其称为self.constraintableviewbottomtosuperviewbottom。我将在视图加载时将选项卡栏的高度设置为减去该约束。这种组合在视觉上是完美的。tableView是它应该达到的确切高度,在视图的底部可以正常工作

禁止使用“按下时隐藏底部条形图”

我尝试过设置UITabBar的动画,使Y与self.view.bounds.frame.Y相同。在我的viewController中,我还有一个tableView,它具有从tableView到SuperView的底部约束。将其称为self.constraintableviewbottomtosuperviewbottom。我将在视图加载时将选项卡栏的高度设置为减去该约束。这种组合在视觉上是完美的。tableView是它应该达到的确切高度,在视图的底部可以正常工作。问题是。。。UITabBar所在的底部44px区域。。。不允许触摸事件。我可以在那里点击任何东西。我遗漏了什么,我还需要在屏幕外设置动画(我应该提到的是,我还需要在UITabBarController的UITransition视图外设置动画)来接收触摸?有人能帮忙吗

如果你问自己“你到底为什么要这么做……为什么不在按下按钮时使用HidesBottomBar……我会给出下面的理由”


我正在使用ECSlidingViewController。我相信解决的办法是我必须停止使用它,因为它的缺陷是一个阻碍,但我想看看我是否可以绕过这个问题


问题是。所以我不能使用HidebottomBarWhenPush,因为我使用的是ECSlidingViewController。我现在还不想放弃ECSlidingViewController,我想看看我是否能找到解决方案。

我试过这段代码,它工作得非常好。我在标签栏所在的位置与我的应用程序交互没有任何问题

[UIView animateWithDuration:0.3f animations:^{
    self.tabBarController.tabBar.frame = CGRectOffset(self.tabBarController.tabBar.frame, 0.0f, 49.0f);
}];
尝试一下。。。使用自定义动画隐藏选项卡栏后,使用系统调用隐藏选项卡栏:

[UIView animateWithDuration:0.3f animations:^{
    self.tabBarController.tabBar.frame = CGRectOffset(self.tabBarController.tabBar.frame, 0.0f, self.tabBarController.tabBar.frame.size.height);
}
completion:^(BOOL finished) {
    self.tabBarController.tabBar.hidden = YES;
}];
它也可能是您调用动画的地方。在您开始设置选项卡栏区域的动画后,UIKit中的某些内容可能会弄乱它。例如,如果从
-视图右键启动动画,将显示:
调用。所以试着把你的动画延迟一点,看看这是否有帮助

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    [UIView animateWithDuration:0.3f animations:^{
        self.tabBarController.tabBar.frame = CGRectOffset(self.tabBarController.tabBar.frame, 0.0f, self.tabBarController.tabBar.frame.size.height);
    }
    completion:^(BOOL finished) {
        self.tabBarController.tabBar.hidden = YES;
    }];
});
请注意,我选择使用GCD延迟而不是UIView动画延迟。只是为了确保在延迟之后它不会弄乱选项卡栏


还要注意的是,我这里没有自动布局约束。只是移动它。很好。隐藏起来。

好东西。看来把我搞砸的是在我的InitWithMainTabbarController.m的编码器中,我有
self.tabBar.translucent=NO