完全自定义标签栏UITabbarController + UINavigationController中的过渡

时间:2015-12-16 15:38:03

标签: uitabbarcontroller uitabbar

我有一个(子类)UITabbarController有4个选项卡,每个选项卡都有一个(子类)UINavigationController,有3个级别的视图控制器导航层次结构。

标签栏仅在每个UINavigationController根视图控制器中可见。

当UINavigationController推送第二级视图控制器时,标签栏会与根视图控制器正确滑出:

Standard tab bar animation when pushed

直到这里没问题,一切都是正确的。

第2步,完全自定义标签栏

我实现了一个浮动标签栏(UIView的子类而不是UITabBar),将标签栏添加到UITabbarController视图(注意:默认标签栏添加到同一视图中)但导航控制器推送第二个时的行为导航级别不同,标签栏仍然可见:

Custom tab bar animation when pushed

显然UINavigationController管理标准标签栏并使用根视图控制器移动它,任何想法如何使用我的自定义标签栏复制此行为?我正在寻找一种智能且可重用的方法,而不是在每个根视图控制器中手动执行。

此外,我创建了一个MyTabBar:UITabBar类,并更改了Storyboard中UITabbarController navigationBar的类类型,以拦截setHidden方法并隐藏我的自定义标签栏:

- (void)setHidden:(BOOL)hidden {
    if (hidden)
        [[NSNotificationCenter defaultCenter] postNotificationName:kNOTIF_TabBarNotificationHideBar object:nil];
    else
        [[NSNotificationCenter defaultCenter] postNotificationName:kNOTIF_TabBarNotificationShowBar object:nil];

    [super setHidden:YES];
}

工作正常。

0 个答案:

没有答案